Skip to main content
 首页 » 编程设计

python之如何删除列表中的所有奇数项

2025年05月04日9sharpest

我在 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'] 

但这里切片要容易得多。