开放的编程资料库

当前位置:我爱分享网 > Python教程 > 正文

Python 过滤器列表

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教程。

未经允许不得转载:我爱分享网 » Python 过滤器列表

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏