是否可以通过列表推导创建列表,该列表使用compound Boolean expression,其中至少有一个条件假定存在来自底层可迭代元素的索引值(即使另一个条件不是& #39; t和(应该?)导致表达式为True
)?
执行以下代码时,解释程序会抛出IndexError: tuple index out of range
。
my_lst = [('30', ), ('30', '125'), ('30', '127'), ('30', '125', '567')]
[tpl for tpl in my_lst if (len(tpl) == 1 or tpl[2] == '125')]
# Desired result: [('30', ), ('30', '125'), ('30', '125', '567')]
答案 0 :(得分:5)
Python索引从0开始。索引2
将检索第三个项,而不是第二个。
您想要访问索引1
(第二项):
[tpl for tpl in my_lst if (len(tpl) == 1 or tpl[1] == '125')]
答案 1 :(得分:1)
Python索引从0开始。索引2将检索第三个项目,而不是第二个项目。
您想要访问索引1(第二项):
[tpl in my_lst if(len(tpl)== 1或tpl [1] =='125')]
这仍有潜在的错误。可能有一个零长度元组,这将导致错误。这可能不是基于其余代码的问题,但如果是,则应使用:
编辑排除零长度元组
[tpl for tpl in my_lst if (len(tpl) != 0 and (len(tpl) == 1 or tpl[1] == '125'))]