【问题标题】: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 只是一个单词列表。为什么有人会选择这样做?在我看来,这一切都是按原样返回列表。

【问题讨论】:

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

标签: python filter


【解决方案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”(没有任何样式)。
猜你喜欢
  • 2016-10-04
  • 2013-11-13
  • 2017-10-24
  • 1970-01-01
  • 2019-07-01
  • 2021-05-24
  • 2012-01-08
  • 2021-02-07
  • 1970-01-01
相关资源
最近更新 更多