我认为在 Python 3 中我可以做到:
first, *rest = l
这正是我想要的,但我使用的是 2.6。现在我正在做:
first = l[0]
rest = l[1:]
这很好,但我只是想知道是否有更优雅的东西。
我认为在 Python 3 中我可以做到:
first, *rest = l
这正是我想要的,但我使用的是 2.6。现在我正在做:
first = l[0]
rest = l[1:]
这很好,但我只是想知道是否有更优雅的东西。
first, rest = l[0], l[1:]
基本上是一样的,只是它是一个单线器。元组分配岩石。
这有点长且不太明显,但适用于所有可迭代对象(而不是仅限于可切片对象):
i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
你可以做
first = l.pop(0)
然后l
将是其余的。但是,它会修改您的原始列表,因此可能不是您想要的。
如果l
是string
类型我会建议:
first, remainder = l.split(None, maxsplit=1)
还有一个,使用 python 2.7。只需使用中间函数。合乎逻辑,因为新行为模仿了函数参数传递所发生的情况。
li = [1, 2, 3]
first, rest = (lambda x, *y: (x, y))(*li)