我想在Python 3我就可以做到:Pythonic的方式将列表分为第一个和休息?
first, *rest = l
这正是我想要的,但我使用2.6。现在我正在做:
first = l[0]
rest = l[1:]
这很好,但我只是想知道是否有更优雅的东西。
我想在Python 3我就可以做到:Pythonic的方式将列表分为第一个和休息?
first, *rest = l
这正是我想要的,但我使用2.6。现在我正在做:
first = l[0]
rest = l[1:]
这很好,但我只是想知道是否有更优雅的东西。
first, rest = l[0], l[1:]
基本上是一样的,除了它是一个oneliner。 Tuple assigment岩石。
这是一个有点长,不太明显,但广义所有iterables(而不是被限制在sliceables):
i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
更好的是:'first,last = l [:1],l [1:]'in情况'l'是空的(它更漂亮;)。 – 2010-08-18 21:26:04
应该提到这些在语义上不相同:'l [:1]'是一个列表,'l [0]'是列表的一个元素。 – 2010-08-18 22:11:14
我觉得上面的罚款。你总是可以先做'rest = l [0],l [1:]'。 – katrielalex 2010-08-18 15:52:33
事实上,你无法改进上述 - http://www.python.org/dev/peps/pep-3132/。 – katrielalex 2010-08-18 15:56:19
相关:https://stackoverflow.com/questions/10532473/python-head-and-tail-in-one-line – 2016-03-01 20:37:35