我做错什么了?它显示列表索引超出范围

2024-03-29 12:11:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我做错什么了?你知道吗


Tags: in元素密码列表newforreturnif
3条回答

您可以按以下方式对列表进行切片:

lst[1::2]

一般语法为:

list[start:end:step]

在列表理解[lst[i] for i in lst if (i + 2) % 2 != 0]中,迭代列表中的项,如果i+2是奇数,则尝试从原始列表中获取具有相应索引i的元素。你知道吗

如其他回复中所述,您可以使用enumerate访问索引和元素。你知道吗

或者你可以简单地使用切片

>>> foo = [1, 2, 3, 4, 5]
>>> foo[1::2]
[2, 4]

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

相关问题 更多 >