首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IndexError:列表索引超出范围-用伪变量填充

IndexError:列表索引超出范围-用伪变量填充
EN

Stack Overflow用户
提问于 2019-07-17 03:52:30
回答 1查看 148关注 0票数 0

我有一份60,000份名单。每个列表的范围为2-5个值。

我需要创建一个新的列表,在每个列表中使用第三个值。

该列表还需要保持60,000个条目的长度。

如果我使用第二个值执行此操作,我将执行以下操作:

代码语言:javascript
复制
big_list = [['this', 'is', 'a list'], ['list' 'two'], ['here', 'is', 'another one']]

new_list = [value[1] for value in big_list]

new_list会是

代码语言:javascript
复制
['is', 'two', 'is']

在实际的程序中,new_list现在是一个包含60,000个值的列表,这些值是从每个列表中的第二个值创建的。重要的是,new_list保持相同的长度。

现在,因为如果我尝试的话,有些列表只有2个值

代码语言:javascript
复制
new_list = [value[2] for value in big_list]

我得到了一个很好的IndexError: list index out of range

我需要的结果是

代码语言:javascript
复制
['a list', 'dummy variable', 'another one']

有没有办法在不改变big_list中任何东西的情况下,为只有2个值的列表预置一个虚拟变量?伪变量可以是随机字符串,也可以是列表中的前一个值。如果我说得不清楚,请告诉我&谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 03:58:33

您可以使用itertools.zip_longest (doc):

代码语言:javascript
复制
big_list = [['this', 'is', 'a list'], ['list', 'two'], ['here', 'is', 'another one']]

from itertools import zip_longest

new_list = [value[2] for value in zip(*zip_longest(*big_list, fillvalue='dummy variable'))]
print(new_list)

打印:

代码语言:javascript
复制
['a list', 'dummy variable', 'another one']
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57064522

复制
相关文章

相似问题

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