📜  Python列表理解和Lambda的区别

📅  最后修改于: 2021-09-11 04:33:08             🧑  作者: Mango

列表推导:列表推导是在Python定义和创建列表的一种优雅方式。我们可以像数学语句一样创建列表,并且只能在一行中创建。列表理解的语法更容易掌握。列表理解通常由以下部分组成:

  • 输出表达式,
  • 输入序列,
  • 表示输入序列成员的变量和
  • 一个可选的谓词部分。
List = [expression(i) for i in another_list if filter(i)]

例子 :

lst  =  [x ** 2  for x in range (1, 11)   if  x % 2 == 1]
print(lst)

输出:

[1, 9, 25, 49, 81]

在上面的例子中,

  • x ** 2 是表达式。
  • range (1, 11) 是输入序列或另一个列表。
  • x 是变量。
  • 如果 x % 2 == 1 是谓词部分。

Lambda:在Python,匿名函数意味着函数没有名字。正如我们已经知道的,def 关键字用于定义普通函数,而 lambda 关键字用于创建匿名函数。它具有以下语法:

句法:

lambda arguments : expression

例子:

lst = list(map(lambda x: x**2, range(1, 5)))
print(lst)

输出:

[1, 4, 9, 16]

Lambdas 和 List Comprehension 的区别

List Comprehension 用于创建列表,Lambda 是可以像其他函数一样处理并因此返回值或列表的函数。
例子 :

# list from range 0 to 10
list_ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_)
   
# lambda function
lambda_list = list(map(lambda x: x * 2, list_))
  
# Map basically iterates every element
# in the list_ and returns the lambda 
# function result
print(lambda_list)
   
# list comprehension
list_comp = [x * 2 for x in list_]
print(list_comp)

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]