Как принять ввод в список в python, в котором весь ввод находится в одной строке? - PullRequest
1 голос
/ 21 июня 2020
s=input().split()
n,m=int(s[0]),int(s[1])
arr=(int(i) for i in s[2:])

ввод, например,

3 4 1 2 3 4 5 6 7 8 9 10 11 12

, в первых двух строках и столбцах, а остальные - это 2-й элемент списка

вывод должен быть похож на

[[1,2,3,4],[5,6,7,8],[9,10,11,12]]

Ответы [ 3 ]

0 голосов
/ 21 июня 2020

Если numpy является опцией, вы можете просто изменить форму 1D-массива:

s = input().split()
n,m = int(s[0]),int(s[1])
arr = numpy.array(s[2:], dtype=int).reshape((n,m))

Вы можете вывести его как numpy массив

print(arr)
# array([[ 1,  2,  3,  4],
#       [ 5,  6,  7,  8],
#       [ 9, 10, 11, 12]])

или преобразовать во вложенный список

print(arr.tolist())
# [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
0 голосов
/ 21 июня 2020

Попробуйте так:

s = input().split()
s = list(map(int, s))
[s[2 + (i - 1) * s[1]: 2 + i * s[1]] for i in range(1, s[0] + 1)]

Вывод:

[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
0 голосов
/ 21 июня 2020

Следуя вашему коду:

arr = list(arr)
blocks = [arr[i:i+m] for i in range(0, len(arr), m)]
assert len(blocks) == n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...