列表推导(list comprehension)是Python中一种非常强大且简洁的方式来创建列表。以下是一些列表推导的样例:
1. 简单的数字列表
创建一个包含0到9的平方的列表。
squares = [x**2 for x in range(10)]
print(squares) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2. 带条件的列表推导
创建一个包含0到9中偶数的平方的列表。
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # 输出: [0, 4, 16, 36, 64]
3. 使用函数的列表推导
创建一个列表,包含0到9中每个数字的阶乘。
import math
factorials = [math.factorial(x) for x in range(10)]
print(factorials) # 输出: [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
4. 使用多个循环的列表推导
创建一个列表,包含两个列表中所有元素对的组合。
list_a = [1, 2]
list_b = [3, 4]
combinations = [(a, b) for a in list_a for b in list_b]
print(combinations) # 输出: [(1, 3), (1, 4), (2, 3), (2, 4)]
5. 字典推导转换为列表
创建一个包含字典中所有值的列表。
my_dict = {'a': 1, 'b': 2, 'c': 3}
values_list = [value for key, value in my_dict.items()]
print(values_list) # 输出: [1, 2, 3]
6. 列表推导嵌套
创建一个列表,包含0到2中每个数字与0到2中每个数字相乘的结果。
multiplication_table = [[x * y for y in range(3)] for x in range(3)]
print(multiplication_table) # 输出: [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
在Python中的列表推导,for循环是从左到右顺序执行的。首先执行的是最外层的for循环,也就是 for x in range(3)。这个循环首先迭代 x 的值,对于每一个 x 的值,它将执行内部的列表推导 [x * y for y in range(3)]。
注意,如果发生嵌套,先执行外层,然后从左往右
7.列表转为字典
products = [
(143121312, 100),
(432314553, 30),
(32421912367, 150)
]
# 使用字典推导式将元组列表转换为字典
products_dict = {product[0]: product[1] for product in products}
# 或者
products_dict = dict(products)
print(products_dict)
8.二维数组快捷初始化
初始化一个n行m列的数组
dp = [[0]*(m) for _ in range(n)]