如何从整数列表中提取单个数字?

How to extract individual digits from a list of integers?

刚接触 python 这给我带来了一些麻烦

给定一个整数列表,例如

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

如何提取每个元素的个别数字以形成新列表

 [2,1,2,8] 

我想遍历每个元素并使用取模运算符,但我似乎找不到正确的逻辑

非常感谢任何帮助

我认为最简单的方法是将值转换为字符串并提取单独的字符并将它们转换回整数。

例如:

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]

您可以先将所有数字转换为字符串列表,将每个字符串转换为整数,然后将结果展平为 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]

因为0也是一个数字,想象一下下面的情况,如果一个数字是10,20,30,40.....那么它应该是1,0,2,0,3,0。 .. 分别。

SO DO YOU NEED 0 IN YOUR NEW LIST?

如果此问题的答案是 "NO",则 and 答案失败。这是一种解决方案。

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 ]

此解决方案也满足您的模逻辑。