列表推导:列表推导是在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]