如何在python中初始化2D列表/数组的列向量?

时间:2017-11-03 08:56:59

标签: python arrays python-2.7 python-3.x matrix

假设我有一个名为mat形状5x5的列表列表。

然后我按照以下元素逐个初始化"列",

mat[0][4] = 'X'
mat[1][4] = 'O'
mat[2][4] = 'R'
mat[3][4] = 'N'
mat[4][4] = 'A'

有没有办法在Python中的一行中初始化此列向量,就像MATLAB可能做的那样?

mat[:,4] = ['X','O','R','N','A']

2 个答案:

答案 0 :(得分:1)

不太简洁,但是:

for i,x in enumerate(['X','O','R','N','A']): mat[i][4]=x

或者在单个字符的情况下,略短:

for i,x in enumerate('XORNA'): mat[i][4]=x

或者,您可以使用numpy

import numpy
mat=numpy.array([[' ' for i in range(5)] for j in range(5)])
mat[:,4] = ['X','O','R','N','A']

答案 1 :(得分:-1)

几年前我在开发数独算法时遇到了类似的问题。我不得不经常在列和行之间切换以及嵌套的“for”杀死我。

所以我提出了简单的解决方案,只需旋转我的矩阵,并始终将所有内容都视为一行。如果优化不是问题,您可以这样做。

以下是如何在python中旋转多维数组:Rotating a two-dimensional array in Python