首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能跳过元素的迭代

可能跳过元素的迭代
EN

Stack Overflow用户
提问于 2013-07-12 22:35:07
回答 2查看 50关注 0票数 0

我正在迭代Python中的元组列表,我觉得中间的元素似乎被以某种方式跳过了。下面是我的代码块,目标是删除任何将None作为第二个元素的元组:

代码语言:javascript
复制
print('List of tuples before modification: ' +str(list_of_tuples))
for refseq_tuple in list_of_tuples:
    print('tuple: ' +str(refseq_tuple))
    if refseq_tuple[1] == None:
        list_of_tuples.remove(refseq_tuple)
print('List of tuples after modification: ' +str(list_of_tuples))

下面是输出:

代码语言:javascript
复制
List of tuples before modification: [('100652761', None), ('100653343', None), ('3183', 0)]
tuple: ('100652761', None)
tuple: ('3183', 0)
List of tuples after modification: [('100653343', None), ('3183', 0)]

So...what发生在中间(第二个)元素上吗?它看起来好像根本没有被迭代过,否则它将在其他两个元组之间打印。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-12 22:39:45

正如其他人所指出的,您在迭代列表的同时修改了列表。但是,您可以通过列表理解来完成您在这里所做的工作(除非由于某些原因,您确实需要适当地修改)。

代码语言:javascript
复制
list_of_tuples = [tup for tup in list_of_tuples if tup[1] is not None]
票数 1
EN

Stack Overflow用户

发布于 2013-07-12 22:37:20

您已更改原始列表。所以这次索引1指的是('3183', 0)

代码语言:javascript
复制
>>> alist = [('100652761', None), ('100653343', None), ('3183', 0)]
>>> [x for x in alist if not x[1] is None]
[('3183', 0)]
>>> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17617426

复制
相关文章

相似问题

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