>> s.rstrip("!") 'hello world' 我想为 Python 列表-6ren">
gpt4 book ai didi

python - 如何从列表末尾删除 None 的所有实例?

转载 作者:行者123 更新时间:2023-12-05 05:46:11 30 4
gpt4 key购买 nike

Python 有一个名为 rstrip() 的字符串方法:

>>> s = "hello world!!!"
>>> s.rstrip("!")
'hello world'

我想为 Python 列表实现类似的功能。也就是说,我想从列表末尾删除给定值的所有实例。在这种情况下,值为 None

这里有一些开始的例子:

[1, 2, 3, None]
[1, 2, 3, None, None, None]
[1, 2, 3, None, 4, 5]
[1, 2, 3, None, None, 4, 5, None, None]

我希望最终结果是:

[1, 2, 3]
[1, 2, 3]
[1, 2, 3, None, 4, 5]
[1, 2, 3, None, None, 4, 5]

到目前为止,这是我的解决方案:

while l[-1] is None:
l.pop()

最佳答案

如果您想就地修改列表,那么您的解决方案很好,只需确保处理列表为空的情况:

while l and l[-1] is None:
l.pop()

如果您想计算一个新列表,您可以将您的解决方案调整为:

def stripNone(l):
if not l:
return []

rlim = 0
for x in reversed(l):
if x is None:
rlim += 1
else:
break

return l[: len(l) - rlim]

还有itertools.dropwhile ,但你必须执行两次反转:

def stripNone(l):
return list(dropwhile(lambda x: x is None, l[::-1]))[::-1]

关于python - 如何从列表末尾删除 None 的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71219686/

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