侧边栏壁纸
博主头像
LittleAO的学习小站 博主等级

在知识的沙漠寻找绿洲

  • 累计撰写 125 篇文章
  • 累计创建 27 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Python中的列表推导式和Lambda函数

LittleAO
2023-04-23 / 0 评论 / 0 点赞 / 3 阅读 / 0 字
温馨提示:
本文最后更新于2023-11-13,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

列表推导式

Python中的列表推导式是一种从序列中创建列表的紧凑方式。它是创建新列表的简短方式。相对于使用for循环处理列表,列表推导式的速度要快得多。

# 语法
[i for i in iterable if expression]

示例1:

例如,如果您想将一个字符串更改为字符列表。您可以使用几种方法。让我们看看其中一些方法:

# 一种方式
language = 'Python'
lst = list(language) # string转换为list
print(type(lst))     # list
print(lst)           # ['P', 'y', 't', 'h', 'o', 'n']

# 第二种方式:列表推导式
lst = [i for i in language]
print(type(lst)) # list
print(lst)       # ['P', 'y', 't', 'h', 'o', 'n']

示例2:

假如你要生成一串数字:

# 生成数字
numbers = [i for i in range(11)]  # 生成从0到10
print(numbers)                    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 可以在迭代过程中进行数学运算
squares = [i * i for i in range(11)]
print(squares)                    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 也可以生成一段元组
numbers = [(i, i * i) for i in range(11)]
print(numbers)                             # [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]

列表推导式可以和if表达式合用:

# 生成偶数序列
even_numbers = [i for i in range(21) if i % 2 == 0]  # 在0,21之间生成
print(even_numbers)                    # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

# 生成奇数序列
odd_numbers = [i for i in range(21) if i % 2 != 0]  # 在0,21之间生成
print(odd_numbers)                      # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
# 筛选数字:让我们从下面的列表中筛选出正偶数
numbers = [-8, -7, -3, -1, 0, 1, 3, 4, 5, 7, 6, 8, 10]
positive_even_numbers = [i for i in range(21) if i % 2 == 0 and i > 0]
print(positive_even_numbers)                    # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

# 将三维数组展平
list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_list = [ number for row in list_of_lists for number in row]
print(flattened_list)    # [1, 2, 3, 4, 5, 6, 7, 8, 9]

Lambda函数

Lambda函数是一种没有名称的小型匿名函数。它可以接受任意数量的参数,但只能有一个表达式。Lambda函数类似于JavaScript中的匿名函数。当我们想在另一个函数内编写匿名函数时,我们需要它。

创建Lambda函数

要创建Lambda函数,我们使用lambda关键字,后面跟随一个或多个参数,再跟随一个表达式。请看下面的语法和示例。Lambda函数不使用return语句,但它明确地返回表达式。

# 语法
x = lambda param1, param2, param3: param1 + param2 + param2
print(x(arg1, arg2, arg3))

示例

# 带def的函数
def add_two_nums(a, b):
    return a + b

print(add_two_nums(2, 3))     # 5
# 让我们将上述函数更改为Lambda函数
add_two_nums = lambda a, b: a + b
print(add_two_nums(2,3))    # 5

# 自执行Lambda函数。
(lambda a, b: a + b)(2,3) # 5 - 需要将它封装在print()中,以在控制台中查看结果

square = lambda x : x ** 2
print(square(3))    # 9
cube = lambda x : x ** 3
print(cube(3))    # 27

# 多个变量
multiple_variable = lambda a, b, c: a ** 2 - 3 * b + 4 * c
print(multiple_variable(5, 5, 3)) # 22

在另一个函数内使用Lambda函数

def power(x):
    return lambda n : x ** n

cube = power(2)(3)   # 现在函数power需要2个参数才能运行,在分别的圆括号内。
print(cube)          # 8
two_power_of_five = power(2)(5) 
print(two_power_of_five)  # 32

0

评论区