在列表中打印备用元素(引发IndexError:列表索引超出范围)

Rhy*_*rry -2 python for-loop list slice python-3.x

如何打印列表中的所有其他项目而不会给我这个错误?

我很困惑,我已经以百万种不同的方式尝试了这一百万次,但同样的答案.我的代码现在:

item = 0
fruit = ['Strawberry','apple','pear','orange','banana','cucumber','tomato','Kiwi']
for count in fruit:
    print(fruit[item])
    item = item + 2
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Moi*_*dri 9

您可以使用列表的切片功能,即您可以将列表内容切片为:

your_list[start:end:step]
Run Code Online (Sandbox Code Playgroud)

用简单的话来说就是创建一个新列表:

  • 从索引开始 start
  • 指数 end
  • 与步骤 step

有关更多信息,请阅读:Python的切片表示法

在您的情况下,您可以使用步骤2迭代切片列表.您不需要索引作为指向列表的指针,因为您for将为您执行此操作.您的代码将如下所示:

>>> fruit = ['Strawberry','apple','pear','orange','banana','cucumber','tomato','Kiwi']
>>>
>>> for f in fruit[::2]:
...     print f
...
Strawberry
pear
banana
tomato
Run Code Online (Sandbox Code Playgroud)

这里fruit[::2]有价值:

['Strawberry', 'pear', 'banana', 'tomato']
Run Code Online (Sandbox Code Playgroud)

编辑:您的代码失败的原因是,您正在迭代整个列表,假设n长度.但是您以当前位置的两倍索引访问该项目.当你将在第n/2个元素时,你将尝试访问项目为fruit [n],IndexError当你的列表只保留第n-1个索引时,它会引发.