条件下的列表中的Sum元素(python)

时间:2012-04-11 15:24:21

标签: python list sum

sum( int(i.replace(',',''))if re.search('\d',i)!=None for i in list)

我想将列表中的所有元素相加。问题是元素是字符串,其中一些在其中有数字,我想将它们转换为整数然后将它们加起来。这就是为什么我需要检查字符串中是否有数字。如何在sum函数中向条件添加条件。此外,我想使用sum函数,我不想只是迭代列表,然后添加到变量。

2 个答案:

答案 0 :(得分:3)

  

如何在sum函数中向条件添加条件。

你几乎就在那里,除了if在最后:

sum(int(i.replace(',','')) for i in list if re.search(r'\d', i))

话虽如此,整体方法并非防弹。它会阻塞将数字与其他字符混合的输入(例如'a1')。

此外,使用逗号作为千位分隔符不是通用的。 Some locales用它来标记小数点。在这些语言环境中,您的代码会为包含逗号的数字生成不正确的值。

答案 1 :(得分:1)

也许是这样的

def safeIntToSum(x):
    try: return int(x.replace(",",""))
    except: return 0

print sum([safeIntToSum(x) for x in list])