将列表分为第一个和第二个的Python方法?

将列表分为第一个和第二个的Python方法?,python,list,split,python-2.x,Python,List,Split,Python 2.x,我认为在Python 3中,我可以做到: first, *rest = l 这正是我想要的,但我用的是2.6。目前我正在做: first = l[0] rest = l[1:] 这很好,但我只是想知道有没有更优雅的 first, rest = l[0], l[1:] 基本上是一样的,只是它是一条单行线。元组分配岩石 这有点长,也不太明显,但适用于所有iterables(而不是仅限于可切片): 你能行 first = l.pop(0) 然后剩下的就是l。不过,它会修改您原来的列表,因此可能

我认为在Python 3中,我可以做到:

first, *rest = l
这正是我想要的,但我用的是2.6。目前我正在做:

first = l[0]
rest = l[1:]
这很好,但我只是想知道有没有更优雅的

first, rest = l[0], l[1:]
基本上是一样的,只是它是一条单行线。元组分配岩石

这有点长,也不太明显,但适用于所有iterables(而不是仅限于可切片):

你能行

first = l.pop(0)
然后剩下的就是
l
。不过,它会修改您原来的列表,因此可能不是您想要的内容。

我建议:

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

还有一个,使用Python2.7。只需使用一个中间函数。逻辑性,因为新行为模拟了函数参数传递时发生的情况

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

我认为上面的是好的。你总是可以先做
first,rest=l[0],l[1:
。事实上,你不能在上面改进--。相关的:更好的是:
first,last=l[:1],l[1:
,以防
l
是空的(而且它更漂亮;)。应该提到这些在语义上是不同的:
l[:1]
是一个列表,
l[0]
是列表的一个元素。
list
没有
.split()
method.oops!我的错误,虽然它是一个stringStill+1,但在本例中它是错误的,这是一件好事,因为我想分割字符串并将结果的开头+其余部分分配给不同的变量。这对空列表不起作用:
x=[];x、 pop(0)回溯(最近一次调用last):索引器中第1行的文件“”:从空列表中弹出
@avyfain:这两种方法都不适用于操作的Python3示例。
首先,*rest=[]
引发值错误。
li = [1, 2, 3]
first, rest = (lambda x, *y: (x, y))(*li)