列表推导式例题1
思考:如何使得列表 a 中每个数值都翻一倍?a = [1,2,3,4,5]
方案一:使用 for 叠加
a = [1,2,3,4,5]
for i in range(len(a)):
a[i] = a[i] * 2
print(a)
方案一优点:逻辑简单、便于理解 方案一缺点:运行时间相对列表推导式方案多一倍
方案二:列表推导式
a = [1,2,3,4,5]
a = [i * 2 for i in a]
print(a)
打印结果:  方案二列表推导式优点:运行速度快,比方案一快一倍,主要原因为列表推导式在python中使用的是更快的C语言来运行。
列表推导式例题2
思考:处理二维数组,提取出二维数组中每一行的第二个数值。 方案一:使用for
matrix = [[1,2,3],[4,5,6],[7,8,9]]
a = []
for i in matrix:
a.append(i[1])
print(a)
 方案二:使用列表推导式
matrix = [[1,2,3],[4,5,6],[7,8,9]]
a = [i[1] for i in matrix]
print(a)

列表推导式例题3
思考:如何将二维列表matrix中主对角线以及副对角线的值构成列表。 主对角线
matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
a = [matrix[i][i] for i in range(len(matrix))]
print(a)
 副对角线
matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
a = [matrix[i][len(matrix)-i-1] for i in range(len(matrix))]
print(a)

使用列表推导式初始化列表
思考:如何运用列表列表推导式初始化创建一个二维列表?
使用for初始化列表
a = [0] * 3
for i in range(3):
a[i] = [0] * 3
a[1][1] = 8
for i in a:
for each in i:
print(each, end=" ")

使用列表推导式初始化列表
a = [[0] * 3 for i in range(3)]
a[1][1] = 8
for i in a:
for each in i:
print(each,end=" ")
print()

|