0
A
回答
2
使用內置split
的數量從字符串
>>> a = ['1 MB', '2 MB']
>>> sum([int(s.split(' ')[0]) for s in a])
3
s.split(' ')
的其餘部分分開創建列表['1', 'MB']
或者用生成器表達式,以避免不必要的列表,該列表理解創建:
>>> a = ['1 MB', '2 MB']
>>> sum(int(s.split(' ')[0]) for s in a)
3
1
假設所有元素都以結尾,你可以這樣做:
sum(map(int, (x[:-3] for x in a)))
擊穿:
(x[:-3] for x in a)
通吃,但字符串的最後三個字符。map(int, iterable)
'將'int
函數映射到可迭代的每個元素。sum(iterable)
只是對可迭代元素進行求和。
0
,你可以在這裏使用regex
:
In [19]: a = ['1 MB', '2 MB']
In [20]: sum(int(re.search(r'\d+',x).group()) for x in a)
Out[20]: 3
其中re.search(r'\d+')
回報是這樣的:
In [23]: [re.search(r'\d+',x).group() for x in a]
Out[23]: ['1', '2']
0
這將工作不同的乘數:
import re
pattern = "(\d+)\s*(\w+)?"
a = ['1 MB', '2 MB', '3 K', '250' ]
multiplier = { None: 1, 'MB' : 1000000, 'K' : 1000 }
def multi(m):
if m:
return int(m.group(1)) * multiplier[m.group(2)]
else:
return 0
r = map(multi, [ re.search(pattern, x) for x in a])
print r
print sum(r)
利用隨後的輸出:
[1000000, 2000000, 3000, 250]
3003250
相關問題
- 1. 面板和列表組下拉列表
- 2. 我如何排序下面的列表
- 3. 如何求和一列列表?
- 4. 如何求和linq中的子列表?
- 5. 頁面請求表單下拉列表中的所有項目
- 6. 我如何在列表中求和值?
- 7. 如何發送下面的params請求?
- 8. textbox下面的表列
- 9. 如何求和二維列表中的列?
- 10. 如何求和varchar列?
- 11. 如何通過列求和
- 12. 如何求和選擇列?
- 13. 如何從3列求和
- 14. 使用代理列表下載或請求頁面?
- 15. 列表的列表CSS和HTML裏面
- 16. 如何在json請求中在android中創建和自定義列表頁面
- 17. jquery中如何將表單元素逐列逐列求和?
- 18. R:如何在列表中對多列矩陣求和?
- 19. 如何顯示jsp頁面搜索請求後的記錄列表頁面
- 20. 如何求和計算linq查詢的子表中的列?
- 21. 求和嵌套列表
- 22. 的SelectList和下拉列表
- 23. 如何添加下面的列表視圖
- 24. 如何刷新頁面上的下拉列表值更改?
- 25. 如何在頁面加載時獲取下拉列表的值
- 26. 如何使用下拉列表的值從HTML頁面到servlet?
- 27. 如何將下面的列表轉換爲字典?
- 28. 如何避免下拉列表中selectedindexchanged後的頁面刷新?
- 29. 如何擺脫計劃中的額外列表級別?下面
- 30. 如何加載下拉列表onchange生成的新頁面?
您可以用生成器替換列表理解 - 節省時間和內存,特別是對於大列表。 – Volatility
@Volatility,謝謝指出。 – StoryTeller