Как преобразовать строки матрицы в столбцы в Python без NumPy? - PullRequest
1 голос
/ 04 апреля 2020

Я работаю над Решателем Судоку в 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?

Ответы [ 3 ]

1 голос
/ 04 апреля 2020

Предположим, у вас есть матрица с именем m

transposed = zip(*m)
1 голос
/ 04 апреля 2020

Один простой способ - использовать zip и *:

>>> ip = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]

>>> print(list(zip(*ip)))
[(1, 2, 3), (1, 2, 3), (1, 2, 3)]
0 голосов
/ 04 апреля 2020

если ваш ввод 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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...