如何在没有出现此错误的情况下打印列表中的所有其他项目?
我很困惑,我已经用百万种不同的方式尝试了这一百万次,但回答相同。 我的代码现在:
item = 0
fruit = ['Strawberry','apple','pear','orange','banana','cucumber','tomato','Kiwi']
for count in fruit:
print(fruit[item])
item = item + 2
有什么想法吗?
答案 0 :(得分:9)
您可以使用列表的切片功能,即您可以将列表内容切片为:
your_list[start:end:step]
简单来说会创建一个新列表:
start
end
step
有关详情,请参阅:Python's slice notation
在您的情况下,您可以使用步骤2迭代切片列表。您不需要索引作为指向列表的指针,因为for
将为您执行此操作。您的代码将如下所示:
>>> fruit = ['Strawberry','apple','pear','orange','banana','cucumber','tomato','Kiwi']
>>>
>>> for f in fruit[::2]:
... print f
...
Strawberry
pear
banana
tomato
此处fruit[::2]
包含值:
['Strawberry', 'pear', 'banana', 'tomato']
编辑:您的代码失败的原因是,您正在遍历整个列表,假设 n 长度。但是您在两次当前位置的索引处访问该项目。如果您将在 n / 2 元素上,您将尝试以 fruit [n] 的形式访问该项目,这将在您的列表持有时引发IndexError
项目仅至 n-1 索引。
答案 1 :(得分:3)
如果您希望通过跳过每2个元素来迭代fruit
,可以按以下步骤进行:
for item in fruit[::2]:
print(item)
答案 2 :(得分:1)
您的代码无效的原因是
for count in fruit:
遍历fruit
列表中的每个项目,因此一旦您处于中途点,item
将指向列表末尾之外。以下是您的代码的修改版本,用于说明:
item = 0
fruit = ['Strawberry', 'apple', 'pear', 'orange', 'banana', 'cucumber', 'tomato', 'Kiwi']
print(len(fruit))
for v in fruit:
print(v, item)
item = item + 2
<强>输出强>
8
Strawberry 0
apple 2
pear 4
orange 6
banana 8
cucumber 10
tomato 12
Kiwi 14
因此,一旦我们达到“香蕉”,fruit[item]
将尝试访问超出fruit
结尾的项目,并引发IndexError
例外。
正如其他人所提到的,在Python中执行此任务的常用方法是使用扩展切片:
fruit = ['Strawberry', 'apple', 'pear', 'orange', 'banana', 'cucumber', 'tomato', 'Kiwi']
for v in fruit[::2]:
print(v)
<强>输出强>
Strawberry
pear
banana
tomato
如果你想要奇数项,你可以在1开始切片:
for v in fruit[1::2]:
print(v)
<强>输出强>
apple
orange
cucumber
Kiwi
或者您可以按原样打印切片,因为它只是一个列表:
print(fruit[::2])
<强>输出强>
['Strawberry', 'pear', 'banana', 'tomato']
答案 3 :(得分:0)
您的代码在打印声明中有轻微错误:
item = 0
fruit = ['Strawberry','apple','pear','orange','banana','cucumber','tomato','Kiwi']
for item in fruit[0::2]:
print(item)
输出:
Strawberry
pear
banana
tomato