sum( int(i.replace(',',''))if re.search('\d',i)!=None for i in list)
我想将列表中的所有元素相加。问题是元素是字符串,其中一些在其中有数字,我想将它们转换为整数然后将它们加起来。这就是为什么我需要检查字符串中是否有数字。如何在sum函数中向条件添加条件。此外,我想使用sum函数,我不想只是迭代列表,然后添加到变量。
答案 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])