📜  在Python中按谓词过滤Python列表

📅  最后修改于: 2022-05-13 01:55:18.604000             🧑  作者: Mango

在Python中按谓词过滤Python列表

在本文中,我们将讨论如何使用谓词过滤Python列表。过滤器函数用于在谓词的帮助下过滤给定元素列表中的元素。谓词是一个函数,通过在过滤方法中执行一些条件操作,总是返回 True 或 False

语法

filter(predicate, list)

在哪里,

  • list 是一个输入列表
  • 谓词是要在给定列表上执行的条件

方法一:使用 lambda 作为谓词

这里 lambda 用于评估充当谓词的表达式。

语法

filter(lambda x: condition, list)

在哪里

  • list 是一个输入列表
  • 条件作为谓词

示例:过滤列表中的所有偶数和奇数

Python3
# create a list of 10 elements
data = [10, 2, 3, 4, 56, 32, 56, 32, 21, 59]
  
# apply a filter that takes only even numbers with
# lambda as predicate
a = filter(lambda x: x % 2 == 0, data)
  
# display
for i in a:
    print(i)
  
print("------------")
  
  
# apply a filter that takes only odd  numbers with
# lambda as predicate
a = filter(lambda x: x % 2 != 0, data)
  
# display
for i in a:
    print(i)


Python3
# create a list of 10 elements
data = [10, 2, 3, 4, 56, 32, 56, 32, 21, 59]
  
# filter data using comprehension
# to get even numbers
print([x for x in data if x % 2 == 0])
  
# filter data using comprehension
# to get odd numbers
print([x for x in data if x % 2 != 0])


输出:

10
2
4
56
32
56
32
------------
3
21
59

方法 2:使用列表推导

这里列表理解充当谓词。

语法

[iterator for iterator  in list condition]

在哪里,

  • list 是输入列表
  • 迭代器用于迭代输入的元素列表
  • 条件作为谓词

示例:获取奇数和偶数的Python代码

Python3

# create a list of 10 elements
data = [10, 2, 3, 4, 56, 32, 56, 32, 21, 59]
  
# filter data using comprehension
# to get even numbers
print([x for x in data if x % 2 == 0])
  
# filter data using comprehension
# to get odd numbers
print([x for x in data if x % 2 != 0])

输出:

[10, 2, 4, 56, 32, 56, 32]
[3, 21, 59]