0

次のコードを参照してください。

choices = ['pizza', 'pasta', 'salad', 'nachos']
print 'Your choices are:'
for index, item in enumerate(choices):
    print index+1, item

出力:

Your choices are:
1 pizza
2 pasta
3 salad
4 nachos
None

3 行目のfor は 2 つの引数を取ります。

インデックスの場合、enumerate(choices) の項目:

しかし、for ループの構文は次のとおりです。

array=[...]
for element in array

これは実際にどのように機能しますか?for ループは複数の引数を取りますか? はいの場合、どのように使用できますか?

4

3 に答える 3

5

Python では、割り当て時にシーケンスをアンパックできます。

>>> foo = ('spam', 'ham')
>>> bar, baz = foo
>>> bar
'spam'
>>> baz
'ham'

forループでも同じことができます:

list_of_tuples = [('foo', 'bar'), ('spam', 'ham')]
for value1, value2 in list_of_tuples:
    print value1, value2

印刷します

foo bar
spam ham

このenumerate()関数は、引数として渡されたシーケンスから、インデックスと値の 2 つの値のタプルを生成します。

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
于 2013-11-07T12:41:26.587 に答える
0

実際には、タプル型の引数を 1 つ取り、それをunpackedします。

構文は次のようになります。

a, b = b, a

これは、2 つの変数の「スワップ」を記述する良い方法です。

ただし、次のように考えてください。

(a,b) = (b,a)

次に、タプル unpackingと組み合わせた「単一のタプル」割り当てがあります。

于 2013-11-07T12:41:57.847 に答える
0

タプルの解凍です。割り当てでは、左側に変数のタプルを配置できます。右側にちょうどその量の要素がある場合、それらは次のように割り当てられます。

a, b = (3, 4)  # Now a is 3 and b is 4

forループでもそれを行うことができます

for a, b in [(3, 4), (5, 6)]:
    print(a)

3 を出力してから 5 を出力します。

enumerate は (index, element) のタプルを生成するため、要素の for ループは機能します。

于 2013-11-07T12:42:19.820 に答える