假设我有一个名为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']
答案 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