2017-08-18 15 views
1

私は説明できないアンパックの問題に遭遇しました。タプルのリストを列挙型でアンパックする方法は?

これは動作します:

tuples = [('Jhon', 1), ('Jane', 2)] 

for name, score in tuples: 
    ... 

これも

for id, entry in enumerate(tuples): 
    name, score = entry 
    ... 

に動作しますが、これは動作しません:

for id, name, score in enumerate(tuples): 
    ... 

ValueError: need more than 2 values to unpack exeptionを投げます。

答えて

5

enumerateは、リスト値とそれに対応するインデックスでタプルを作成します。この場合:

list(enumerate(tuples)) 

ができます:

[(0, ('Jhon', 1)), (1, ('Jane', 2))] 

は完全にあなたはこれを試すことができますアンパックする:ここでは

for index, (name, id) in enumerate(tuples): 
    pass 

は、Pythonは右側にインデックスタプルオブジェクトをペアリングされました結果を左側に表示して割り当てます。

3

ラップnameおよびscoreをタプルで開梱します。

for id, (name, score) in enumerate(tuples): 
    print(id, name, score) 

# Output 
# (0, 'Jhon', 1) 
# (1, 'Jane', 2) 

列挙事がイテレータまたは配列のいずれかである(物)は、返されイテレータ返す(0、事を[0])、(1、事[1])、(2 、物[2])など。

この場合、物はタプルです。

関連する問題