本文采用列表嵌套实现矩阵的行列转换。
第一种方法(此方法来源于https://docs.python.org/zh-cn/3/tutorial/datastructures.html#list-comprehensions
matrix = [
[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],
]
print(
[[row[i] for row in matrix] for i in range(4)]
)
第二种方法,使用for循环实现。
初始代码如下:
matrix = [
[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],
]
# print(
# [[row[i] for row in matrix] for i in range(4)]
# )
result = []
result_1 = []
for y in range(len(matrix[0])):
for x in range(len(matrix)):
result_1.append(matrix[x][y])
result_1=list(result_1)
print('result_1',result_1)
print('len(result)',len(result))
result.append(result_1)
result_1[:]=[]
print('result',result)
运行程序,发现第一层外循环结束后,result的元素不对(如下
result_1 [1, 5, 9]
len(result) 0
result [[]] #第一层外循环结束后的结果
result_1 [2, 6, 10]
len(result) 1
result [[2, 6, 10], []]
result_1 [3, 7, 11]
len(result) 2
result [[2, 6, 10], [3, 7, 11], []]
result_1 [4, 8, 12]
len(result) 3
result [[2, 6, 10], [3, 7, 11], [4, 8, 12], []]
然后将问题发给CHATGPT4-MINI,得到的结果如下:
按照提示,调整代码。调整滞后的代码如下:
result = []
for y in range(len(matrix[0])):
result_1 = [] #代码修改点
for x in range(len(matrix)):
result_1.append(matrix[x][y])
result_1=list(result_1)
print('result_1',result_1)
print('len(result)',len(result))
result.append(result_1)
# result_1[:]=[] #代码修改点
print('result',result)
运行结果
输出结果符合预期。
总结:多层循环的时候,一定要注意全局变量和局部变量的赋值、还原。
PS:GPT很强大,可以好好利用它帮助我们提高学习效率。