首页 > 解决方案 > 我究竟做错了什么?它显示列表索引超出范围

问题描述

我有一个给定的列表,我想将该列表中具有奇数索引的所有元素添加到新列表中。这是我的代码:

def odd_indices(lst):
  new_lst = [ lst[i] for i in lst if (i + 2) % 2 != 0 ]
  return new_lst

我究竟做错了什么?

标签: pythonloopsrange

解决方案


您可能希望使用索引而不是值本身。该列表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]))

推荐阅读