[英]Add elements in a list Python
under__list =[[74, 0.1423287845938018, None, None, 10,
1.9099604642265018, 0.5185563065935468, 1.6825659992347914,
3.547506695574544, 2.7789822726693023, 20051, 0, 25, None, ' >50K'],
[44, 0.9181229773462783, None, None, 14, 0.17973300970873787,
0.1644822006472492, 0.13940129449838187, 1.1252427184466018,
0.4357200647249191, 0, 0, 40, None, ' <=50K']]
我有上面的列表,但我想將元素添加到一起但跳過None
和">=50"
元素。
即使我不知道None
數值的位置,我希望能夠做到這一點。 有什么建議?
for item in zip(under__list[row]):
under__list.append(int(sum(item[0])))
尋找以下輸出:
[1182, 25.2452245, None, None, 9212, 256, 2624, 25.24,
2532, 25, 2005252, 52, 25632, None, ' >50K']
這將是一個添加了數字的列表。
看起來你想要對所有內部列表中相同索引的項進行求和。 首先,你需要使用帶*
zip
,然后在列表中理解每行的第一項是一個Number
類型的實例,或者只是int
或float
( isinstance(x[0], (int, float))
),如果是,則將其他用作第一項作為值。
>>> from numbers import Number
>>> [sum(x) if isinstance(x[0], Number) else x[0] for x in zip(*under__list)]
[118, 1.0604517619400802, None, None, 24, 2.0896934739352395, 0.683038507240796, 1.8219672937331732, 4.672749414021146, 3.2147023373942214, 20051, 0, 65, None, ' >50K']
表達式sum(x) if isinstance(x[0], Number) else x[0]
稱為條件表達式 。
for item in under_list:
item_ = filter(lambda x: x != None and x >= 50, under_list)
# Here compute sum of item_ and append to the right place
寫一個函數來返回你需要的東西:
def foo(thing):
try:
return sum(thing)
except TypeError:
return thing[0]
將函數map
到under__list
的zip
ped 行
>>> under__list =[[74, 0.1423287845938018, None, None, 10, 1.9099604642265018, 0.5185563065935468, 1.6825659992347914, 3.547506695574544, 2.7789822726693023, 20051, 0, 25, None,' >50K'], [44, 0.9181229773462783, None, None, 14, 0.17973300970873787, 0.1644822006472492, 0.13940129449838187, 1.1252427184466018, 0.4357200647249191, 0, 0, 40, None, ' <=50K']]
>>> map(foo, zip(*under__list))
[118, 1.0604517619400802, None, None, 24, 2.0896934739352395, 0.683038507240796, 1.8219672937331732, 4.672749414021146, 3.2147023373942214, 20051, 0, 65, None, ' >50K']
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.