目次
ウォルラス演算子 Walrus Operatorとは
ユースケース
_2.1 If-Statementsからの値の再利用
_2.2 List Comprehensionsでのフィルタリング
_2.3 While-Loopsでのデータ読み取り
_2.4 計算されたの再利用
1. ウォルラス演算子 Walrus Operatorとは
Python のバージョン 3.8 ( 2019 年 10 月リリース)はウォルラス演算子 (:=)というassignment expressions を導入されました。セイウチの牙に少し似ているため、「セイウチ演算子」(:=)とも呼ばれます。ウォルラス演算子はvarが「value」に設定され、同時に値が出力されます。
2. ユースケース
2.1 If-Statementsからの値の再利用
リストの数量を確認し、リストが指定された値を表示します。warningとリストの数量を出力します。
下記の例は、リストの値が5を超えると、warningとリストの数量を表示します。
values = [1, 2, 3, 4, 5, 6] if (n := len(values)) > 5: print(f’The list is longer than 5. It contains {n} values.’) |
The list is longer than 5. It contains 6 values.
2.2 List Comprehensionsでのフィルタリング
リスト内包表記は、高速に計算できるというメリットがあります。 しかし以前は、リストの作成中にフィルターをすばやく適用したい場合は、mapを使用してかなり複雑なlambda式を使っていました。
しかし内包表記だけでmapを使用せずに書く事ができるようになっています。例えば下記の例は、値ごとに、greater_10をフィルターとして使用し、関数がNoneを返さない場合にのみ値を表示します。
data = [10, 20, 30, 40] def greater_10(x): if x > 10: return x print([y for x in data if (y := greater_10(x)) is not None]) |
[20, 30, 40]
2.3 while-Loopsでのデータ読み取り
ファイルを読み取りたい場合、通常、読み取るデータがなくなったときに、条件付きロジックを使用してwhile-Loopsから抜け出します。 ウォルラス演算子を使用すると、このプロセスをかなりわかりやすく書くことができます。
with open(‘text’, ‘r’) as f: while c := f.read(1): print(c) |
c
2.4 計算されたの再利用
ウォルラス演算子を使用すると、計算された値をリスト内包表記で簡単に再利用できます。下記の例はcalculate関数の結果は簡単に再計算します。
x = [10, 20, 30, 40] def calculate(x): return sum(x) l = [x := calculate(x), x**2, x**4] print(l) |
[100, 10000, 100000000]
担当者:KW
バンコクのタイ出身 データサイエンティスト
製造、マーケティング、財務、AI研究などの様々な業界にPSI生産管理、在庫予測・最適化分析、顧客ロイヤルティ分析、センチメント分析、SaaS、PaaS、IaaS、AI at the Edge の環境構築などのスペシャリスト