我有一个给定的列表,我想将该列表中具有奇数索引的所有元素添加到新列表中。这是我的代码:
def odd_indices(lst):
new_lst = [ lst[i] for i in lst if (i + 2) % 2 != 0 ]
return new_lst
我在做什么错了?
答案 0 :(得分:0)
您可能要使用索引而不是值本身。列表lst
包含值而不包含索引。 enumerate
帮助生成索引。像下面这样。
def odd_indices(lst):
new_lst = [ v for i, v in enumerate(lst) if i% 2 != 0 ]
return new_lst
print(odd_indices([1, 2, 4, 5]))
答案 1 :(得分:0)
使用enumerate
处理索引
>>> lst = [0,1,2,3,4,5,6,7,8,9,10]
>>> [value for index, value in enumerate(lst) if index%2 != 0]
[1, 3, 5, 7, 9] # output odd index values
您犯了什么错误?
EX:
lst = [1,2,3,4,5,6,7,8,9,10]
在lst
上方,最后一个元素是10。
lst[10] ---> which does not exists. # Throws out of index range error
答案 2 :(得分:0)
您可以按如下方式对列表进行切片:
lst[1::2]
一般语法为:
list[start:end:step]
答案 3 :(得分:0)
在列表理解[lst[i] for i in lst if (i + 2) % 2 != 0]
中,您遍历列表中的项目,如果i + 2为奇数,则尝试从具有相应索引i的原始列表中获取元素。
如其他答复中所述,您可以使用枚举来访问索引和元素。
或者您可以简单地使用切片
>>> foo = [1, 2, 3, 4, 5]
>>> foo[1::2]
[2, 4]