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

问题描述 投票:0回答:1

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

给定一个整数列表,如

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

我如何提取每个元素的独立数字,形成一个新的列表?

 [2,1,2,8] 

我曾想过用modulo操作符来迭代每个元素,但我似乎找不到正确的逻辑。

非常感谢任何帮助

python-3.x list cs50
1个回答
3
投票

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

比如说

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)

Prints:

[2, 1, 2, 8]

2
投票

你可以先把所有的数字转换成字符串列表, 把每个字符串转换成一个整数, 然后把结果扁平化. 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
投票

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

那么你的新列表中需要0吗?

如果这个问题的答案是 "NO",那么......你需要在你的新列表中加入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 ]

这个解决方案也满足你的模数逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.