Как из целого числа сделать массив?
Как при заполнении массива, вводить консоль целое число = 12345, но он записывался в массив как [1,2,3,4,5]? Массив двумерный. Если делаю так:
for i in range(0,n):
a.append([int(j) for j in input().split()])
приходится, то в массив сохраняется само число 12345.
Ответы (3 шт):
Автор решения: Came Up
→ Ссылка
n = 12345
# Вариант 1. int - функция, которую map применит к каждому символу
# в итерабельной последовательности n (строка - итерабельная последовательность))
print(list(map(int, str(n)))) # -> [1, 2, 3, 4, 5]
# map, filter - эти встроенные функции можно переписать
# с помощью генераторов списка. Например, так:
print([int(x) for x in str(n)]) # -> [1, 2, 3, 4, 5]
# Вариант 2. Пройтись циклом по всем цифрам числа начиная с конца
a = []
while n > 0:
a.append(n % 10) # берем последнюю цифру числа и добавляем ее в список
n //= 10 # убираем последнюю цифру числа
a.reverse()
print(a) # -> [1, 2, 3, 4, 5]
Автор решения: SergFSM
→ Ссылка
для разнообразия еще один способ, рекурсивный (n=int(n)):
def f(n):
return [n] if n<10 else f(n//10) + [n%10]
#
f(1234567890)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
Автор решения: Qwertiy
→ Ссылка
a = [int(x) for x in input()]
print(a)
b = map(int, input())
print(*b)
Во втором случае получается не список, зато смотрится прикольно.