如何在Python2中处理可变长度子列表解压缩
在Python3中,如果我有可变的子列表长度,我可以使用以下成语:
>>> x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]
>>> for i, *item in x:
... print (item)
...
[2, 3, 4, 5]
[4, 6]
[5, 6, 7, 8, 9]在Python2中,这是一个无效的语法:
>>> x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]
>>> for i, *item in x:
File "<stdin>", line 1
for i, *item in x:
^
SyntaxError: invalid syntax顺便说一句,这个问题与Idiomatic way to unpack variable length list of maximum size n略有不同,因为解决方案需要一定长度的知识。
这个问题专门用于解决Python2中的问题。
发布于 2017-01-24 08:47:57
Python2没有splat语法(*item)。最简单、最直观的方法是绕道而行:
for row in x:
i = row[0]
item = row[1:]发布于 2017-01-24 09:02:50
如果您计划大量使用这个构造,那么编写一个小助手可能是值得的:
def nibble1(nested):
for vari in nested:
yield vari[0], vari[1:]然后你就可以写你的循环了
for i, item in nibble1(x):
etc.但我怀疑你会发现这是否足够优雅..。
发布于 2017-01-24 08:59:22
你也可以这样做:
x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]
for lista in x:
print (lista[1:])或者也可以使用列表理解:
x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]
new_li = [item[1:] for item in x]https://stackoverflow.com/questions/41823545
复制相似问题