:=
より具体的には Pythonの場合、オペランドは何を意味しますか?
誰かがこのコードのスニペットの読み方を説明できますか?
node := root, cost = 0
frontier := priority queue containing node only
explored := empty set
:=
より具体的には Pythonの場合、オペランドは何を意味しますか?
誰かがこのコードのスニペットの読み方を説明できますか?
node := root, cost = 0
frontier := priority queue containing node only
explored := empty set
質問のコンテキストでは、疑似コードを扱っていますが、Python 3.8以降で:=
は、実際には式内の変数の割り当てを可能にする有効な演算子です。
# Handle a matched regex
if (match := pattern.search(data)) is not None:
# Do something with match
# A loop that can't be trivially rewritten using 2-arg iter()
while chunk := file.read(8192):
process(chunk)
# Reuse a value that's expensive to compute
[y := f(x), y**2, y**3]
# Share a subexpression between a comprehension filter clause and its output
filtered_data = [y for x in data if (y := f(x)) is not None]
詳細はPEP 572を参照してください。
あなたが見つけたのは疑似コードです
疑似コードは、コンピューター プログラムまたはその他のアルゴリズムの動作原理を非公式に高レベルで記述したものです。
:=
実際には代入演算子です。Python では、これは単に=
.
この疑似コードを Python に変換するには、参照されるデータ構造と、アルゴリズムの実装についてもう少し知る必要があります。
疑似コードに関する注意事項:
:=
代入演算子または=
Python=
等値演算子または==
Pythonprocedure fizzbuzz
For i := 1 to 100 do
set print_number to true;
If i is divisible by 3 then
print "Fizz";
set print_number to false;
If i is divisible by 5 then
print "Buzz";
set print_number to false;
If print_number, print i;
print a newline;
end
void function fizzbuzz
For (i = 1; i <= 100; i++) {
set print_number to true;
If i is divisible by 3
print "Fizz";
set print_number to false;
If i is divisible by 5
print "Buzz";
set print_number to false;
If print_number, print i;
print a newline;
}
ブレースの使用法と代入演算子の違いに注意してください。
10 月 14 日の 3.8 リリースおめでとうございます!
:=
より大きな式の一部として変数に値を割り当てる新しい構文があります。セイウチの目と牙に似ていることから、「セイウチのオペレーター」として親しみを込めて知られています。この例では、代入式が
len()
2 回の呼び出しを回避するのに役立ちます。if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")