gpt4 book ai didi

python - 从某些特定元素前面的列表中删除元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:32 25 4
gpt4 key购买 nike

假设我们有一个列表[Y, X, 4, Y, 3, X, 2, X]

我希望能够删除所有紧接在 X 前面的元素,并删除 X 本身。所以结果应该类似于 [Y, Y, 3]。执行此操作的 pythonic 方式是什么?

我想出了类似下面的东西,但我觉得它很笨重而且不干净。有更好的方法吗?

list = [Y, X, 4, Y, 3, X, 2, X]
is_preceded = False
result = []
for i in list:
if i == 'X':
is_preceded = True
elif is_preceded == True:
is_preceded = False
else:
result.append(i)

最佳答案

使用 ziplist comprehension :

>>> lst = ['Y', 'X', 4, 'Y', 3, 'X', 2, 'X']
>>> [a for a, b in zip(lst, [''] + lst) if b != 'X' and a != 'X']
['Y', 'Y', 3]

# a: current item
# b: previous item

顺便说一句,不要使用list 作为变量名。它代表一个内置类型/函数 list .


如果您使用 Python 2.x,zip 将返回一个新列表。如果您不想使用它,请使用 itertools.izip

另外,如果你不想创建一个临时列表([''] + lst),你可以使用itertools.chain([''], lst)

关于python - 从某些特定元素前面的列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24938714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com