gpt4 book ai didi

python - 如何从 Python 列表末尾删除 'None' 项

转载 作者:行者123 更新时间:2023-12-03 02:42:50 26 4
gpt4 key购买 nike

A 有一个列表,其中可能包含“无”项目。我想删除这些项目,但前提是它们出现在列表末尾,所以:

[None, "Hello", None, "World", None, None]
# Would become:
[None, "Hello", None, "World"]

我已经编写了一个函数,但我不确定这是否是在 python 中实现它的正确方法?:

def shrink(lst):
# Start from the end of the list.
i = len(lst) -1
while i >= 0:
if lst[i] is None:
# Remove the item if it is None.
lst.pop(i)
else:
# We want to preserve 'None' items in the middle of the list, so stop as soon as we hit something not None.
break
# Move through the list backwards.
i -= 1

还有一个列表理解作为替代方案,但这似乎效率低下并且不再具有可读性?:

myList = [x for index, x in enumerate(myList) if x is not None or myList[index +1:] != [None] * (len(myList[index +1:]))]

从列表末尾删除“无”项目的Pythonic方法是什么?

最佳答案

从列表末尾丢弃是有效的。

while lst[-1] is None:
del lst[-1]

如有必要,请为 IndexError: pop fromempty list 添加防护措施。使用空列表进行处理是否应被视为正常情况或错误情况,取决于您的具体应用程序。

while lst and lst[-1] is None:
del lst[-1]

关于python - 如何从 Python 列表末尾删除 'None' 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58309803/

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