我只是在学习,找不到有关这种情况如何运作的信息。
例如,有一个包含任何元素的列表,包括空/空元素。您需要创建一个排除这些元素的列表:
elems = [(), (), ('',), ('a', 'b'), (), ('a', 'b', 'c'), (1,), (), (), ('d',), ('', ''), ()]
non_empty_elems = [el for el in elems if el]
我想知道if el部分发生了什么样的化学反应。
我了解这个构造的作用以及它使用布尔值。
这是否意味着 Python 检查“该元素存在”?那些。在这种情况下 1 是一个现有元素(有值)而 0 是一个空值?或者它的工作方式有所不同?
简单来说, if el执行期间语言内部发生了什么
if el:
等价的if bool(el):
,然后查看有关标准数据类型的文档Python
:嗯,也就是说,所有对象都被视为默认对象
True
,但以下对象除外:None
和False
0
任何数字类型对象的哪些内置方法检查以确定对象是否具有值的说明
False
:__bool__()
返回的方法False
(显然,这些是不同类型的数字零的None
情况)False
__len__()
返回0
(序列和集合)的方法在这种情况下,您有一个元组列表,如果您的 el 不等于 None,则 if el 条件将起作用。空集,无论是列表、字典还是元组,也将返回 None