簡體   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