我认为在Python 3中我将能够做到:
first, *rest = l
这正是我想要的,但我使用的是2.6。现在我正在做:
first = l[0]
rest = l[1:]
这很好,但我只是想知道是否有更优雅的东西。
答案 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)