60

Pythonでこのようにする方法はありますか:

a, b, = 1, 3, 4, 5

その後:

>>> a
1
>>> b
3

上記のコードはスローされるため機能しません

ValueError: too many values to unpack

4

5 に答える 5

114

Nolen の回答に追加するために、Python 3 では、次のように残りをアンパックすることもできます。

>>> a, b, *rest = 1, 2, 3, 4, 5, 6, 7
>>> a
1
>>> rest
[3, 4, 5, 6, 7]

残念ながら、これは Python 2 では機能しません。

于 2012-07-07T00:19:53.153 に答える
61

あなたが示したリテラルでそれを行う方法はありません。ただし、スライスして必要な効果を得ることができます。

a, b = [1, 3, 4, 5, 6][:2]

リストの最初の 2 つの値を取得するには:

a, b = my_list[:2]
于 2012-07-07T00:22:03.407 に答える
28

Python 3 では、次のことができます。

>>> a, b, *_ = 1, 3, 4, 5
>>> a
1
>>> b
3

_必要のない値の単なるプレースホルダーです

于 2012-07-07T00:20:48.877 に答える
6

_「捨てたい」変数を表すために使用できます

>>> a, b, _ = 1, 3, 4
>>> a
1
>>> b
3
于 2012-07-07T00:17:16.480 に答える
2

または、Python 3.x では次のようにできます。

  a, *b = 1, 3, 4

あなたに与える:

In [15]: a
Out[15]: 1

In [16]: b
Out[16]: [3, 4]

解析する必要がありますが、例外は回避されますb。これは、 の左側に 2 つの変数のみが必要であると想定しています=。それ以外の場合は、

a, b, *ignore = ....

v3.x で

于 2012-07-07T00:19:55.530 に答える