2016-05-22 11 views
2

私は次のように、numbersから最初の3つの項目を抽出し、3つの異なる変数に割り当てるしようとしている:リストから項目を抽出し、変数に割り当てる

numbers = [1,2,3,4,5,7,8,9,10] 
[first_item, second_item, third_item] = numbers 

をなぜ私はこのエラーを取得しています?

Traceback (most recent call last): 
    File "test.py", line 2, in <module> 
    [first_item, second_item, third_item] = numbers 
ValueError: too many values to unpack 

答えて

7

正しいとrest変数にあなたのリストの残りの要素を割り当てることです方法です - あなただけの最初の3つの要素を割り当てるを探していることから、エラーが来る

[first_item, second_item, third_item] = numbers[:3] 

理由として両側の不平等のためのリストのアカウント内の他の要素sign

8

あなたはそのようなリストでそれらに割り当てられていない、とあなたはあなたのリストについては、開梱の残りの部分を処理する必要がある - あなたのエラーメッセージは、変数を持っているよりも解凍するために複数の値があることを示していますに割り当てる。これを修正することができます一つの方法は、*開梱作業

numbers = [1,2,3,4,5,7,8,9,10] 
first_item, second_item, third_item, *rest = numbers 

これは、Python 3以降のみ可能であることに注意してください、PEP 3132 - Extended Iterable Unpackingを参照してください、

+1

W/O(脇パフォーマンス)等号の右側のコードを変更OPが左側に第四項を追加することができますので、私は、私が提案したスライシングよりも、実際にこれをよりよく好き。 – roadrunner66

4

3つの数字に10個の数字のリストを割り当てていますが、これはあいまいです。スライスは役立ちます:

a,b,c = numbers[:3] 
関連する問題