在Python 2.x中用Python的方法把一个列表分成first和rest?

vhmi4jdf  于 2023-01-29  发布在  Python
关注(0)|答案(4)|浏览(134)

我想在Python 3中我可以做到:

first, *rest = l

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

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

很好,但我想知道有没有更优雅的。

cdmah0mi

cdmah0mi1#

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

基本上一样,除了它是一行。元组赋值。
这段代码有点长,也不太明显,但它适用于所有可迭代对象(而不是仅限于可切片对象):

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

3okqufwl2#

你能做到

first = l.pop(0)

然后l将是其余的,但是它修改了原始列表,所以可能不是您想要的。

lokaqttq

lokaqttq3#

还有一个,使用python2.7,只需要使用一个中间函数,因为新的行为模拟了函数参数传递的过程。

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

e4yzc0pl4#

如果lstring类型,我建议:

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

相关问题