Python中for循环中的列堆栈矩阵
我有一些starter矩阵A=[1,2,3,4],我想实现一个循环,它会给starter矩阵加一个幂Python中for循环中的列堆栈矩阵,python,arrays,for-loop,matrix,Python,Arrays,For Loop,Matrix,我有一些starter矩阵A=[1,2,3,4],我想实现一个循环,它会给starter矩阵加一个幂 for i in range(3,0,-1) A**i 当这个循环发生时,我还希望将矩阵列堆栈为B=[[1,8,27,64],[1,4,9,16],[1,2,3,4],[1,1,1]]。 如何实现这一点?更新答案: 我认为这段代码实际上更好地回答了您的问题(例如,使用生成器矩阵/行)。列表理解逻辑没有改变,我们在这里所做的只是定义x列表,而不是从范围生成 starter_row = [
for i in range(3,0,-1)
A**i
当这个循环发生时,我还希望将矩阵列堆栈为B=[[1,8,27,64],[1,4,9,16],[1,2,3,4],[1,1,1]]。
如何实现这一点?更新答案: 我认为这段代码实际上更好地回答了您的问题(例如,使用生成器矩阵/行)。列表理解逻辑没有改变,我们在这里所做的只是定义
x
列表,而不是从范围生成
starter_row = [1, 2, 3, 4]
num_rows = 4
result = [
[x ** y for x in starter_row] for y in range(num_rows - 1, -1, -1)
]
print(result)
输出(如下所示):
原始答案:
您可以通过列表理解来实现这一点:
row_len = 4
num_rows = 4
result = [
[x ** y for x in range(1, row_len + 1)] for y in range(num_rows - 1, -1, -1)
]
print(result)
输出:
[[1, 8, 27, 64], [1, 4, 9, 16], [1, 2, 3, 4], [1, 1, 1, 1]]
此实现的好处是,您可以根据需要动态调整尺寸。如果你总是需要一个X乘X的矩阵,你可以简化一点,只需为大小设置一个变量,列表理解就会保持不变
此外,如果要颠倒行的顺序,只需将y
范围生成器更改为range(num_rows)
[[1, 8, 27, 64], [1, 4, 9, 16], [1, 2, 3, 4], [1, 1, 1, 1]]