Python列表过滤器教程展示了如何在Python中过滤列表。
过滤
过滤操作处理一个数据结构(例如列表)并生成一个新的数据结构,该数据结构恰好包含给定谓词返回true的那些元素。
谓词是一个返回布尔值的单参数函数。
具有列表理解的Python过滤器列表
列表理解是一种句法构造,它基于现有列表创建列表。
列表理解创建一个新列表。它基于现有列表。for循环遍历序列。对于每个循环,如果满足条件,则计算表达式。如果计算出该值,则将其附加到新列表中。条件是可选的。
#!/usr/bin/python a = [-2, 1, -4, 2, 0, -1, 12, -3] b = [e for e in a if e > 0] print(b)
我们有一个整数列表。我们创建一个新的正整数列表。
b = [e for e in a if e > 0]
为了过滤掉正数,我们使用if条件,它应用于每个元素;只有满足条件的元素才会包含到新列表中。
$ ./list_compr.py [1, 2, 12]
偶数是可以被2整除的整数。奇数是不能整除成对的整数。
#!/usr/bin/python a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] b = [e for e in a if e % 2] print(b)
该示例创建了一个新的奇数过滤列表。要获得奇数,我们使用%
运算符。
$ ./list_compr2.py [1, 3, 5, 7, 9, 11]
我们可以按数据类型过滤值。
#!/usr/bin/python a = ['a', 4, 'c', 12, 'e', 3, 'd'] b = [e for e in a if type(e) == int] c = [e for e in a if type(e) == str] print(b) print(c)
在示例中,我们有一个混合了整数和字符串的列表。我们将整数和字符串分成两个新列表。
b = [e for e in a if type(e) == int]
我们使用type
内置函数来确定一个值的数据类型。
$ ./list_compr3.py [4, 12, 3] ['a', 'c', 'e', 'd']
我们可以在列表理解中有多个条件。
#!/usr/bin/python a = [9, -2, 5, 14, 22, -11, 7, -19, 23] b = [e for e in a if e % 2 == 0 if e > 0] print(b)
该示例过滤掉所有也是偶数的正值。
$ ./list_compr4.py [14, 22]
带过滤功能的Python过滤列表
filter
是一个内置函数,它从满足给定谓词的可迭代元素中返回迭代器。该函数早于列表推导;通常建议使用列表理解。
#!/usr/bin/python words = ['sky', 'cloud', 'wood', 'forest', 'tie', 'nice', 'cup'] filtered = filter(lambda e: len(e) == 3, words) print(list(filtered))
使用filter
函数,我们找出所有包含三个字符的单词。
filtered = filter(lambda e: len(e) == 3, words)
作为谓词,我们有一个检查当前元素长度的匿名函数。
print(list(filtered))
filter
函数返回一个迭代器;为了查看元素,我们将迭代器传递给list
函数。
$ ./filter_fun.py ['sky', 'tie', 'cup']
使用自定义算法的Python过滤器列表
以下示例使用自定义算法来过滤列表。
#!/usr/bin/python vals = [-1, 2, 0, 11, 9, -3, -4, 3] positive = [] for val in vals: if val > 0: positive.append(val) print(positive)
我们使用一个for循环和一个if条件来过滤掉所有正值。
$ ./custom_filter.py [2, 11, 9, 3]
在本教程中,我们在Python中过滤了列表。
列出所有Python教程。