在Python中,如何在没有NumPy的情况下将矩阵的行转换为列?

2024-09-29 21:45:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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]]传递给它,它可以正常工作,并给我输出3,但是为了检查所有列是否有重复的数字,我需要将行转换为列,这意味着我需要如下内容:Input: [[1, 1, 1], [2, 2, 2], [3, 3, 3]] Output: [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 有没有想过没有NumPy我怎么做


Tags: 函数infordef矩阵数字matrixrow
3条回答

如果您的输入是numpy.array,您可以使用转置:

i = np.array([[1,1,1], [2,2,2], [3,3,3]])
print(i.T)

输出:

[[1 2 3]
 [1 2 3]
 [1 2 3]]

或者您可以使用:

list(map(list, zip(*i)))

一种简单的方法是利用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)

相关问题 更多 >

    热门问题