2017-05-14 14 views
0

私は経験豊富なPythonプログラマーではなく、理解できないコードを見ました。残念ながら、構文は非常に扱いにくく、インターネット上で検索することは困難です。私はと「_」と「__」いくつかの説明を見つけたが、私は、コードを以下は上記のコードで「_」Python _ forループの後に割り当てられたときの意味

if not allowed_positions: 
    return (0, 0) 
_, point = max([(self.point(graph.find_point(p), self), p) for p in allowed_positions]) 

のための特別な意味を持っている場合があり、なぜ私は理解していないことを確認していないけどポイント= ...の前にカンマ「 - 」で強調表示されています。

+3

このコードではforループがないので、私はあなたのタイトルについて混乱しています。 –

+0

@AdamSmith配列を作成するforループ - > "for p in allowed_positions"があり、max関数はこの配列から最大値を見つけます。しかし、私を混乱させたのはポイントの前に "_"でした。私はループを使ってこの構文のカップルだった。 – DevBoy

+0

リストの理解と呼ばれる@DevBoy。それはまったく異なる構文的構造です。 '[iterableのアイテムの式]' –

答えて

5

_は、破棄された変数のプレースホルダとして使用されます。 2つの要素を持つタプルを返す関数があり、タプルの2番目の部分だけに興味があるとしましょう。次に、不要な変数に_を使用するのが一般的な方法です。例:

>>> def return_tuple(): 
...  return (24,7) 
... 
>>> _, days = return_tuple() 
>>> days 
7 
+0

あなたの編集を抹消した直後(私の編集履歴は表示されません)投稿の現在の状態に満足していない場合は、元の回答を元通りに復元してください(問題ありません)。 – timgeb

+0

@timgeb完了。ありがとう。 – DhruvPathak

+0

ありがとうございます@DhruvPathak短いと明確な説明です。 – DevBoy

1

_あなたはtuple unpackingのためにそれを使用することができます

。あなたがにデータを格納する必要がない変数のプレースホルダであり、その値がないことを示すために、アンダースコアを使用して練習するのが一般的ですスクリプトの後半で使用してください。

for _, last_name in soldiers: 
    # print the second element 
    print(last_name) 

の代わりにやって:

for first_name, last_name in soldiers: 
    print(last_name 

ので、あなたはこれを行うだろう唯一の最後の名前を取得したい、soldiers = [('Steve', 'Miller'), ('Stacy', 'Markov'), ('Sonya', 'Matthews'), ('Sally', 'Mako')]

と:

にあなたはこのような何かを持っていた場合first_nameを使用する必要はありません。あなたは_に置き換えますので、不要な変数を保存しないでください

+0

説明のために@GarrettKadillakに感謝します。それは助けになった。 – DevBoy

関連する問題