Python列表推导式
Python列表推导式
Python列表推导式又称列表生成式、列表解析式,是表达式与循环的结合。
列表生成式是一种灵活快速的生成列表list的方式。
列表推导式的方括号内包含以下内容:一个表达式,后面跟一个 for
子句,然后,是零个或多个 for
或 if
子句。结果是新的列表,由对表达式依据后面的 for
和 if
子句的内容进行求值计算而得出。
list1=[x for x in range(10)]
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list2=[x*x for x in range(10)]
print(list2) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
list3=[x*x for x in range(10) if x % 2==0]
print(list3) # [0, 4, 16, 36, 64]
稍微复杂点的例子
mylist=[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
print(mylist)
# [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
列表推导式与三元表达式结合(即列表推导式中的表达式是三元表达式)
mylist = [1 if i % 2 == 0 else 0 for i in range(1, 11)]
print(mylist)
# [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
Python列表推导式的嵌套
Python列表推导式的嵌套时,先计算内层,再计算外层,这一点与普通循环嵌套一样。
矩阵转置
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
t_matrix=[[row[i] for row in matrix] for i in range(4)]
print(t_matrix)
# [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]