我想在Python 3中我可以做到:
first, *rest = l
这正是我想要的,但我用的是2.6。现在我在做的是:
first = l[0] rest = l[1:]
很好,但我想知道有没有更优雅的。
cdmah0mi1#
first, rest = l[0], l[1:]
基本上一样,除了它是一行。元组赋值。这段代码有点长,也不太明显,但它适用于所有可迭代对象(而不是仅限于可切片对象):
i = iter(l) first = next(i) # i.next() in older versions rest = list(i)
3okqufwl2#
你能做到
first = l.pop(0)
然后l将是其余的,但是它修改了原始列表,所以可能不是您想要的。
l
lokaqttq3#
还有一个,使用python2.7,只需要使用一个中间函数,因为新的行为模拟了函数参数传递的过程。
li = [1, 2, 3] first, rest = (lambda x, *y: (x, y))(*li)
e4yzc0pl4#
如果l是string类型,我建议:
string
first, remainder = l.split(None, maxsplit=1)
4条答案
按热度按时间cdmah0mi1#
基本上一样,除了它是一行。元组赋值。
这段代码有点长,也不太明显,但它适用于所有可迭代对象(而不是仅限于可切片对象):
3okqufwl2#
你能做到
然后
l
将是其余的,但是它修改了原始列表,所以可能不是您想要的。lokaqttq3#
还有一个,使用python2.7,只需要使用一个中间函数,因为新的行为模拟了函数参数传递的过程。
e4yzc0pl4#
如果
l
是string
类型,我建议: