私はPython 3で私ができると思います:
first, *rest = l
これはまさに私が欲しいものですが、私は2.6を使用しています。今のところ私はやっています:
first = l[0]
rest = l[1:]
これで結構ですが、もっとエレガントなものがあるのかと思っていました。
first, rest = l[0], l[1:]
ワンライナーであることを除いて、基本的に同じです。タプルの割り当て岩。
これは少し長く、あまり明確ではありませんが、(スライス可能に制限されるのではなく)すべての反復可能に対して一般化されています。
i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
できるよ
first = l.pop(0)
l
が残りになります。ただし、元のリストが変更されるので、必要なものではない可能性があります。
python 2.7で作業するさらにもう1つの方法。中間の関数を使用するだけです。新しい動作は関数のパラメーターの受け渡しで発生したことを模倣するため、論理的です。
li = [1, 2, 3]
first, rest = (lambda x, *y: (x, y))(*li)