我在 stackoverflow 上搜索过,看到有人这样写:
[item for item in yourlist if item % 2]
它对我不起作用。
我的代码是这样的:
x = ['apple','fruit','orange','fruit','lemon','fruit']
for i in range(0,len(x),2):
if i%2 !=0:
x.pop(i)
print x
这也不行。它说弹出索引超出范围
怎么做?
请您参考如下方法:
大步使用切片:
x = x[1::2]
或者选择奇数项而不是偶数项:
x = x[::2]
第一个获取输入列表中的第二个元素,从第二个项目开始。另一个从列表中的第一项开始,每隔一个元素取一次。
演示:
>>> x = ['apple', 'fruit', 'orange', 'fruit', 'lemon', 'fruit']
>>> x[1::2]
['fruit', 'fruit', 'fruit']
>>> x[::2]
['apple', 'orange', 'lemon']
原始代码只适用于只选择偶数值,而不是偶数索引。您可以使用 enumerate() function向该循环添加索引:
>>> [f for i, f in enumerate(x) if i % 2]
['fruit', 'fruit', 'fruit']
但这里切片要容易得多。
