Python 循环矩阵变换

Python 循环矩阵变换,python,python-3.x,for-loop,Python,Python 3.x,For Loop,因此,可以将矩阵的图像转换为该规则的行和列: 原始矩阵第一行中的值将成为图像矩阵最后一列的值。原始矩阵第二行中的值成为图像矩阵最后第二列的值…。依此类推…直到原始矩阵最后一行中的值成为图像矩阵第一列的值 作为图表,左手矩阵是原始矩阵,右手矩阵是其图像 [['a', 'b', 'c'], [['g', 'd', 'a'], ['d', 'e', 'f'], ['h', 'e', 'b'], ['g', 'h', 'i']]

因此,可以将矩阵的图像转换为该规则的行和列:

原始矩阵第一行中的值将成为图像矩阵最后一列的值。原始矩阵第二行中的值成为图像矩阵最后第二列的值…。依此类推…直到原始矩阵最后一行中的值成为图像矩阵第一列的值

作为图表,左手矩阵是原始矩阵,右手矩阵是其图像

 [['a', 'b', 'c'],           [['g', 'd', 'a'],
  ['d', 'e', 'f'],            ['h', 'e', 'b'],
  ['g', 'h', 'i']]            ['i', 'f', 'c']] 
假设Python中已经存在以下内容:

矩阵:表示数字矩阵的3 x 3列表(类似于上面的示例)

图像:与矩阵大小相同的列表,仅包含空的子列表(用于存储矩阵图像)

索引:包含整数0、1和2的列表(即矩阵和图像的有效索引位置)

根据上述规则,完成以下代码以返回矩阵的图像

for row in indexes:
    for ____ in ____:
        image[row].append(matrix[____] [____])
这些选择包括:

row
col
0
1
2
len(indexes)
indexes
2 - col
2 - row
col - 2
row - 2
len(matrix)

任何选项都可以在空白点上使用。在学习python之后,我的直觉告诉我,我应该尝试回答这样的问题:

for row in indexes:
    for col in indexes:
         image[row].append([col][row])

我认为将会发生的是,它将获取所有的值,并将它们切换为row->column和column->row。我是有点正确还是完全错了?

这有点棘手,因为它与正常的转置不完全一样。但这应该对你有用:

matr = [['a', 'b', 'c'],
        ['d', 'e', 'f'],
        ['g', 'h', 'i']]

rotated = [list(reversed(x)) for x in zip(*matr)]

print(rotated)
输出:

[['g','d','a'],['h','e','b'],['i','f','c']]
或者使用for循环执行相同的操作:

matr = [['a', 'b', 'c'],
        ['d', 'e', 'f'],
        ['g', 'h', 'i']]

rotated = []
for x in zip(*matr):
    rotated.append(list(reversed(x)))

print(rotated)
输出:

[['g','d','a'],['h','e','b'],['i','f','c']]

请回答你的问题,以澄清你到底在问什么。您可以直接测试代码的结果是否与所需的输出匹配,从而测试结果是否正确。您是否在询问这是否解决了问题,或者如何改变它来解决问题?请注意,字母
'g'
[2][0]
开始,到
[0][0]
结束,因此行/列的简单交换是不正确的。另请参见。是否可以使用forloop?因为这就是我的目标