ウォルラス演算子のユースケース(Walrus Operator:Use cases)

目次

ウォルラス演算子 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 の環境構築などのスペシャリスト