从Python中的列表中删除奇数索引元素

我正在尝试从列表中删除奇数索引的元素(零被视为偶数),但是以这种方式删除它们将不起作用,因为它会抛出索引值。

lst = ['712490959', '2', '623726061', '2', '552157404', '2', '1285252944', '2', '1130181076', '2', '552157404', '3', '545600725', '0']

def remove_odd_elements(lst):

i=0

for element in lst:

if i % 2 == 0:

pass

else:

lst.remove(element)

i = i + 1

如何遍历列表并清除那些索引奇数的元素?

回答:

您可以使用slice一次性删除所有奇数项目:

del lst[1::2]

演示:

>>> lst = ['712490959', '2', '623726061', '2', '552157404', '2', '1285252944', '2', '1130181076', '2', '552157404', '3', '545600725', '0']

>>> del lst[1::2]

>>> lst

['712490959', '623726061', '552157404', '1285252944', '1130181076', '552157404', '545600725']

在迭代列表时,不能从列表中删除元素,因为列表迭代器在删除项目时不会进行调整。请参阅循环“忘记”以删除某些项,尝试时会发生什么。

另一种方法是建立一个新的列表对象,以取代旧的,使用列表理解与enumerate()提供的指标:

lst = [v for i, v in enumerate(lst) if i % 2 == 0]

将保留 偶数元素,而不是删除奇数元素。

以上是 从Python中的列表中删除奇数索引元素 的全部内容, 来源链接: utcz.com/qa/428221.html

回到顶部