[英]How do I convert the rows of a matrix to columns in Python without NumPy?
我正在 Python 中研究数独求解器,我需要在其中创建函数。 其中之一检查数独矩阵并返回其中包含重复数字的行数。
def findRepeatsInColumn(matrix):
numRepeats = 0
for row in matrix:
safeChars=['[', ']', '/']
usedChars=[]
for char in str(row):
if char in usedChars and char not in safeChars:
numRepeats += 1
break
else:
usedChars.append(char)
return numRepeats
如果我将矩阵[[1, 1, 1], [2, 2, 2], [3, 3, 3]]
传递给它,它可以正常工作并给我 output 3,但用于检查所有列是否重复数字,我需要将行转换为列,这意味着我需要类似: Input: [[1, 1, 1], [2, 2, 2], [3, 3, 3]] Output: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
如果没有 NumPy,我有什么想法吗?
一种简单的方法是使用zip
和*
:
>>> ip = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]
>>> print(list(zip(*ip)))
[(1, 2, 3), (1, 2, 3), (1, 2, 3)]
假设您有一个名为m
的矩阵
transposed = zip(*m)
如果您的输入是numpy.array
您可以使用转置:
i = np.array([[1,1,1], [2,2,2], [3,3,3]])
print(i.T)
output:
[[1 2 3]
[1 2 3]
[1 2 3]]
或者你可以使用:
list(map(list, zip(*i)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.