Как извлечь отдельные цифры из списка целых чисел? - PullRequest
3 голосов
/ 09 мая 2020

Я новичок в python, это доставляло мне некоторые проблемы

Учитывая список целых чисел, например

 [2, 0, 0, 0, 0, 12, 0, 8]

, как я могу извлечь отдельные цифры каждого элемента, чтобы сформировать новый список

 [2,1,2,8] 

У меня была идея перебрать каждый элемент и использовать оператор по модулю, но я не могу найти правильный лог c

Любая помощь очень важна оценен

Ответы [ 3 ]

3 голосов
/ 09 мая 2020

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

Например:

lst = [2, 0, 0, 0, 0, 12, 0, 8]

digits = []
for value in lst:
    if value != 0:
        digits.extend(map(int, str(value)))

print(digits)

Печать:

[2, 1, 2, 8]
2 голосов
/ 09 мая 2020

Вы можете сначала преобразовать все числа в списки строк, преобразовать каждую строку в целое число, а затем сгладить результат с помощью itertools.chain.from_iterable:

>>> from itertools import chain
>>> lst = [2, 0, 0, 0, 0, 12, 0, 8]
>>> list(chain.from_iterable(map(int, str(x)) for x in lst if x != 0))
[2, 1, 2, 8]
1 голос
/ 10 мая 2020

Так как 0 также является di git, представьте себе следующий случай, если число похоже на 10, 20, 30, 40 ..... Тогда оно должно быть как 1, 0, 2, 0, 3, 0 ... соответственно.

ТАК ВАМ НУЖЕН 0 В ВАШЕМ НОВОМ СПИСКЕ?

Если ответ на этот вопрос «НЕТ», то это и этот не отвечает. Вот одно решение.

myList = [10, 0, 0, 0, 0, 12, 0, 8]

newList = []
for i in myList:
    while i >= 10:
        newList.append(i%10)
        i = i//10
    newList.append(i)

newList = [ x for x in newList if x != 0 ]

Это решение также удовлетворяет вашему модулю logi c.

...