sum( int(i.replace(',',''))if re.search('\d',i)!=None for i in list)
我想总结一个列表中的所有元素。问题是元素是字符串,其中一些有数字,我想将它们转换为整数,然后将它们相加。这就是为什么我需要检查字符串中是否有数字。如何在 sum 函数的列表中添加条件。另外我想使用 sum 函数,我不想只遍历列表然后添加到变量中。
如何在 sum 函数的列表中添加条件。
你快到了,除了if
最后出现:
sum(int(i.replace(',','')) for i in list if re.search(r'\d', i))
话虽如此,整体方法并不是万无一失的。它会阻塞将数字与其他字符(例如'a1'
)混合的输入。
此外,使用逗号作为千位分隔符并不普遍。一些语言环境使用它来标记小数点。在这些语言环境中,您的代码会为带有逗号的数字生成不正确的值。
也许是这样的
def safeIntToSum(x):
try: return int(x.replace(",",""))
except: return 0
print sum([safeIntToSum(x) for x in list])