Pythonic方法将列表分成第一个并休息?

时间:2010-08-18 15:48:04

标签: python list split

我认为在Python 3中我将能够做到:

first, *rest = l

这正是我想要的,但我使用的是2.6。现在我正在做:

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

这很好,但我只是想知道是否有更优雅的东西。

4 个答案:

答案 0 :(得分:37)

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

基本相同,除了它是一个oneliner。 Tuple assigment rocks。

这有点长而且不那么明显,但是对于所有迭代(而不是仅限于切片)都是通用的:

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

答案 1 :(得分:16)

你可以做到

first = l.pop(0)

然后l将是其余的。但它会修改你的原始列表,所以也许它不是你想要的。

答案 2 :(得分:0)

又一个使用python 2.7。只需使用一个中间函数。逻辑上是新行为模仿了函数参数传递发生的情况。

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

答案 3 :(得分:-2)

我建议:

first, remainder = l.split(None, maxsplit=1)