Разбить число и вывести из функции результат избежав двухмерного массива
Задача создать функцию, которая разбивает любое число на однозначные числа.
Вроде получилось, но не могу догнать, как избежать двухмерного массива в итоге в переменной z и вывести из функции по нормальному, чтобы потом было проще с этими числами работать.
Обе функции должны остаться для дальнейшего кода, т.е. razbiv передает в переменную z из persistence результат.
Мой код:
def persistence(n):
z = []
def razbiv(n):
x = [int(a) for a in str(n)]
c = z.append(x)
razbiv(n)
return print(z)
persistence(39)
Выдает:
[[3, 9]]
В допоолнение подскажите, как можно вообще избежать массива?
Ответы (3 шт):
В вашей функции переменная x уже принимает список, который вам необходим, а далее вы берете и методом .append добавляете его в другой пустой список z, тем самым создавая вложенный список, от которого и пытаетесь избавиться. Для вашей задачи будет достаточно такой функции:
def persistence(n):
lst = [int(i) for i in str(n)]
return lst
Данная функция принимает на вход число (например 467), а на выходе возвращает готовый список [4, 6, 7], который вы и можете использовать дальше в своем коде. Как пример, можете присвоить его переменной и далее работать уже с ней:
z = persistence(input('Введи любое число: '))
print(z)
Вывод:
Введи любое число: 16546
[1, 6, 5, 4, 6]
Если вам прям так хочется явно объявить переменную z, то выносите делайте ее глобальной, объявив ее вне функции, а внутри функции уже переписывайте ее:
z = []
def persistence(n):
global z
z = [int(i) for i in str(n)]
return z
persistence(123)
print(z)
Вывод:
[1, 2, 3]
z Уже является массивом. Следовательно вызвав функцию append ты добавляешь в массив z переменную x, которая в свою очередь тоже массив, созданным с помощью list comprehension.
def persistence(n):
x = [int(a) for a in str(n)]
return print(x)
persistence(39)
Вообще это обычно как-то так делается:
def razbiv(n):
return list(map(int, str(n)))
def persistence(n):
z = razbiv(n)
return print(z)
persistence(39)
Вывод:
[3, 9]
Но учтите, что фактически persistence у вас возвращает None.