这样做的目的是啥 my_list = list(filter(None, my_list))

Posted

技术标签:

【中文标题】这样做的目的是啥 my_list = list(filter(None, my_list))【英文标题】:What is the purpose of doing my_list = list(filter(None, my_list))这样做的目的是什么 my_list = list(filter(None, my_list)) 【发布时间】:2020-11-16 08:49:09 【问题描述】:

我在正在阅读的一段代码中看到了以下行,但我只是不明白它的用途:

my_list = list(filter(None, my_list))

my_list 只是一个单词列表。为什么有人会选择这样做?在我看来,这一切都是按原样返回列表。

【问题讨论】:

这能回答你的问题吗? remove None value from a list without removing the 0 value 我不清楚该链接如何回答这个问题。 OP 没有询问如何在不删除零的情况下删除 None。问题中的代码删除了这两个和任何其他虚假值。 链接中的问题具有确切的语法,这表明它用于删除 None 和 0 [ FALSE ]。这不是您要找的吗? @roshanok 那个问题中的 OP 正在使用这个公式并且没有得到他们想要的结果。没有一个答案真正解决了它的作用,这是 this OP 的问题。它实际上并没有回答 this 问题。 【参考方案1】:

这将从my_list 中过滤掉falsy 值并返回一个新列表。最好用一个例子来说明:

my_list = [1, 2 , 0, 3, None, 4, False, True, [], [1], '', 'abc']

list(filter(None, my_list))
# [1, 2, 3, 4, True, [1], 'abc']

documentation 解释它:

过滤器(函数,可迭代) ... 如果function为None,则假定恒等函数,即iterable中所有为false的元素都被移除。

【讨论】:

呸......你链接并引用文档说“假”,但仍然说“假”。希望人们停止使用这种虚构的词,而只使用官方的 Python 术语 :-) 所有单词都是由@HeapOverflow 组成的,但要注意的是,python 文档中似乎没有使用“falsy”。一个风车被打败了……现在我们可以调整我们的 falsies 并继续前进。 啊,是的,当然。但是,是的,我认为 Python 文档始终使用“true”和“false”(没有任何样式)。

以上是关于这样做的目的是啥 my_list = list(filter(None, my_list))的主要内容,如果未能解决你的问题,请参考以下文章

python list 复制拷贝问题

Python:函数总是返回无

C# 从 List<List<int>> 中删除重复项

python中的all()如何处理空列表

为啥 list(my_list) 会修改对象?

列表常用方法