在 Python 中将过滤器对象转换为列表
Convert a filter object to a list in Python
使用list()
该类将过滤器对象转换为列表,例如
result = list(filter(function, iterable))
. 该filter
函数返回一个迭代器,可以使用list()
该类将其转换为列表。
主程序
my_list = [-2, 14, -7, 8, 6] result = list( filter(lambda number: number > 0, my_list) ) print(result) # 👉️ [14, 8, 6]
filter函数接受一个函数和一个可迭代对象作为参数,并从可迭代对象的元素构造一个迭代器,函数返回一个真值。
列表类接受一个可迭代对象并返回一个列表对象。
该
filter()
函数返回一个filter
对象,因此我们必须使用list()
该类将其转换为列表。该示例使用 lambda 函数,但您也可以将常规函数传递给
filter()
.
主程序
my_list = [-2, 14, -7, 8, 6] def greater_than_0(number): return number > 0 result = list( filter(greater_than_0, my_list) ) print(result) # 👉️ [14, 8, 6]
列表中的每个元素都传递给greater_than_0
函数。
该函数检查数字是否大于0
并返回结果。
该filter
对象只包含满足条件的元素。
如果您传递None
函数参数,则 iterable 的所有虚假元素都将被删除。
主程序
my_list = ['abc', '', 0, None, False, {}, 'def'] result = list( filter(None, my_list) ) print(result) # 👉️ ['abc', 'def']
所有不真实的值都被认为是虚假的。Python 中的虚假值是:
- 定义为 falsy 的常量:
None
和False
. 0
(零)任何数字类型。- 空序列和集合:(
""
空字符串),()
(空元组),[]
(空列表),{}
(空字典),set()
(空集),range(0)
(空范围)。
如果需要过滤可迭代对象的元素,也可以使用列表理解。
主程序
my_list = [-2, 14, -7, 8, 6] new_list = [ item for item in my_list if item > 0 ] print(new_list) # 👉️ [14, 8, 6]
列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。
在每次迭代中,我们检查数字是否大于0
并返回结果。
新列表只包含满足条件的元素。
通常情况下,列表理解对于基于简单条件过滤列表来说更直接和可读。