我目前有此列表:['5 4 7', '4 3 1', '6 8 4'', '4 8 6']
请注意,并非所有数字都以逗号分隔。
我希望能够计算列表中每个部分的总数。例如,第一次计算应该是5 + 4 + 7给我16.我只想知道如何转换这个列表,以便能够用数字进行数学计算。
答案 0 :(得分:3)
拆分字符串,映射到整数并在结果输入中对列表理解执行sum
:
>>> [sum(map(int,x.split())) for x in ['5 4 7', '4 3 1', '6 8 4', '4 8 6']]
[16, 8, 18, 18]
(也适用于负值:))
答案 1 :(得分:0)
您也可以使用正则表达式:
import re
s = ['5 4 7', '4 3 1', '6 8 4', '4 8 6']
new_s = [sum(map(int, re.findall('\d+', b))) for b in s]
输出:
[16, 8, 18, 18]
但是,如果每个数字都是一个字符,那么您可以使用isdigit()
:
last_result = [sum(map(int, filter(lambda x:x.isdigit(), i))) for i in s]