作为python的新手,这给我带来了一些麻烦。
给定一个整数列表,如
[2, 0, 0, 0, 0, 12, 0, 8]
我如何提取每个元素的独立数字,形成一个新的列表?
[2,1,2,8]
我曾想过用modulo操作符来迭代每个元素,但我似乎找不到正确的逻辑。
非常感谢任何帮助
我认为最简单的方法是将数值转换为字符串,然后提取单独的字符,再将它们转换为整数。
比如说
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]
你可以先把所有的数字转换成字符串列表, 把每个字符串转换成一个整数, 然后把结果扁平化. 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......。那么它应该分别是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 ]
这个解决方案也满足你的模数逻辑。