web-dev-qa-db-ja.com

リストを最初と残りに分割するPythonの方法?

私はPython 3で私ができると思います:

first, *rest = l

これはまさに私が欲しいものですが、私は2.6を使用しています。今のところ私はやっています:

first = l[0]
rest = l[1:]

これで結構ですが、もっとエレガントなものがあるのか​​と思っていました。

55
Shawn
first, rest = l[0], l[1:]

ワンライナーであることを除いて、基本的に同じです。タプルの割り当て岩。

これは少し長く、あまり明確ではありませんが、(スライス可能に制限されるのではなく)すべての反復可能に対して一般化されています。

i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
37
user395760

できるよ

first = l.pop(0)

lが残りになります。ただし、元のリストが変更されるので、必要なものではない可能性があります。

python 2.7で作業するさらにもう1つの方法。中間の関数を使用するだけです。新しい動作は関数のパラメーターの受け渡しで発生したことを模倣するため、論理的です。

li = [1, 2, 3]
first, rest = (lambda x, *y: (x, y))(*li)
0
kriss