Приведение строки к int в цикле for - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь привести Матрицу строк к Матрице целых чисел, например, у меня есть Matrix=[['1','2']['3','4']]

Я использую разделение, потому что моя Матрица является входом с пробелами внутри, я просто далэто для примера.

и я делаю это:

for arr in Matrix:
     arr=arr.split()
     arr=[map(lambda x:int(x),arr)]

по какой-то причине Матрица остается неизменной, я что-то упустил?

РЕДАКТИРОВАТЬ ЭТО МОЕИСПОЛНИМЫЙ КОД:

Matrix=[];
while True:
     try:
          arrInput=input('enter');
          Matrix.append(arrInput)
     except (KeyboardInterrupt,EOFError):
          print('done');
          break;
for arr in Matrix:
     arr=arr.split()

Ответы [ 2 ]

3 голосов
/ 06 марта 2019

Ваш синтаксис Matrix недействителен, скорее должен быть:

Matrix=[['1','2'],['3','4']]

Использование понимания списка :

Matrix=[['1','2'],['3','4']]    
print([[int(x) for x in lst] for lst in Matrix])

ИЛИ

(если вы хотите, чтобы map было таким, как):

print([list(map(int, lst)) for lst in Matrix])

OUTPUT

[[1, 2], [3, 4]]

pyFiddle

EDIT:

OP: Дело в том, что я не хочу, чтобы он печатался, поэтому, когда я удаляю печать, я получаю эту ошибку.

Если вы не хотите распечатывать его, вы можете назначить его:

res = [list(map(int, lst)) for lst in Matrix]
1 голос
/ 06 марта 2019

Попробуйте, используя numpy (pip install numpy):

import numpy as np
matrix = [['1', '2'], ['3', '4']]
result = np.array(matrix, dtype=int)
print(result.tolist())
# [[1, 2], [3, 4]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...