繁体   English   中英

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

[英]How to extract individual digits from a list of integers?

作为 python 的新手,这给我带来了一些麻烦

给定一个整数列表,例如

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

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

 [2,1,2,8] 

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

很感谢任何形式的帮助

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

例如:

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]

您可以首先将所有数字转换为字符串列表,将每个字符串转换为 integer,然后使用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……。

那么您的新列表中需要 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 ]

该解决方案还满足您的模逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM