![](/img/trans.png)
[英]How can I get the sum of all list[1] inside of list of lists items using python 3?
[英]How can I get rid of having lists inside of a list in python?
def digit_sum(n):
n = str(n)
empty = [x.split() for x in n]
print empty
digit_sum(21)
此代碼將輸出:
[['2'], ['1']]
我需要做的是:
[2, 1]
因此我可以將列表中的數字加在一起。 我怎么做?
我會做的(您不需要將它.split
。只需將其轉換為可以迭代的字符串即可):
def digit_sum(n):
empty = [int(d) for d in str(n)]
print empty
演示:
>>> digit_sum(21)
[2, 1]
然后,您顯然可以將它們與sum()
函數一起添加。
不要叫split
。 Split嘗試在空格上分割字符串(默認情況下)。 它將始終返回一個字符串列表(即使沒有拆分也是如此)。
由於循環在字符串上,因此x
將是單個字符。 這意味着您永遠不會有任何空白。
只需執行[x for x in n]
或list(n)
。
或者,如果您希望數字不是整數,而是整數: [int(x) for x in n]
或map(int, n)
我相信如果你
firstlist.append(secondlist)
Python應該打印1、2。從Windows Phone發布,所以我不能運行代碼,如果這樣做不對不起,請原諒。
這有效:
def digit_sum(n):
n = str(n)
empty = [int(x) for x in n]
print empty
digit_sum(21)
輸出:
[2,1]
split
返回一個列表。 for x in n
將遍歷字符串中的每個字符,並且int(x)
將字符轉換為整數。
>>> from itertools import chain
>>> x = [['2'], ['1']]
>>> map(int, chain(*x))
[2, 1]
如果要完全平整列表列表,則需要檢查其是否可迭代。
為此,您可以創建一個生成器,該生成器返回一個不可迭代的項目,如果該項目是可迭代的,則可以遞歸調用自身。
然后將生成器的每個元素放在列表中,並進行打印。
這將導致循環列表崩潰,即l = []; l.append(l)
l = []; l.append(l)
def get_single_elements(item):
if hasattr(item, '__iter__'):
for child_item in item:
for element in get_single_elements(child_item):
yield element
else:
yield item
def print_flat(item):
print [element for element in get_single_elements(item)]
>>> print_flat([[[0],[1]]])
[0, 1]
>>> print_flat([[[[[0,[1,2,[3,4]]]]],[[1]]]])
[0, 1, 2, 3, 4, 1]
如果確定要將所有項目都轉換為整數,則進行編輯 ,然后像這樣編寫
def print_flat(item):
print [int(element) for element in get_single_elements(item)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.