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

Sha*_*awn 50 python split list

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

first, *rest = l
Run Code Online (Sandbox Code Playgroud)

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

first = l[0]
rest = l[1:]
Run Code Online (Sandbox Code Playgroud)

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

小智 38

first, rest = l[0], l[1:]
Run Code Online (Sandbox Code Playgroud)

基本相同,除了它是一个oneliner.元组的岩石.

这有点长,不太明显,但是对于所有迭代都是通用的(而不是限制为可切片):

i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
Run Code Online (Sandbox Code Playgroud)

  • 更好的是:`first,last = l [:1],l [1:]`以防`l`为空(并且它更漂亮;). (5认同)
  • 应该提到这些在语义上不相同:`l [:1]`是一个列表,`l [0]`是列表的一个元素. (5认同)

Oli*_*ler 18

你可以做

first = l.pop(0)
Run Code Online (Sandbox Code Playgroud)

然后l是剩下的.它会修改你的原始列表,所以也许它不是你想要的.

  • 这不适用于空列表:```x = []; x.pop(0) 回溯(最近一次调用最后一次):文件“<stdin>”,第 1 行,在 <module> 中 IndexError: pop from empty list ``` (2认同)