首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python2中处理可变长度子列表解压缩?

如何在Python2中处理可变长度子列表解压缩?
EN

Stack Overflow用户
提问于 2017-01-24 08:40:47
回答 4查看 622关注 0票数 6

如何在Python2中处理可变长度子列表解压缩

在Python3中,如果我有可变的子列表长度,我可以使用以下成语:

代码语言:javascript
复制
>>> 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中,这是一个无效的语法:

代码语言:javascript
复制
>>> 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中的问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-24 08:47:57

Python2没有splat语法(*item)。最简单、最直观的方法是绕道而行:

代码语言:javascript
复制
for row in x:
    i = row[0]
    item = row[1:]
票数 5
EN

Stack Overflow用户

发布于 2017-01-24 09:02:50

如果您计划大量使用这个构造,那么编写一个小助手可能是值得的:

代码语言:javascript
复制
def nibble1(nested):
    for vari in nested:
        yield vari[0], vari[1:]

然后你就可以写你的循环了

代码语言:javascript
复制
for i, item in nibble1(x):
    etc.

但我怀疑你会发现这是否足够优雅..。

票数 2
EN

Stack Overflow用户

发布于 2017-01-24 08:59:22

你也可以这样做:

代码语言:javascript
复制
x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]

for lista in x:
  print (lista[1:])

或者也可以使用列表理解:

代码语言:javascript
复制
x = [(1, 2,3,4,5), (2, 4,6), (3, 5,6,7,8,9)]

new_li = [item[1:] for item in x]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41823545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档