sum( int(i.replace(',',''))if re.search('\d',i)!=None for i in list)我想对列表中的所有元素求和。问题是,元素是字符串,其中一些包含数字,我想将它们转换为整数,然后将它们相加。这就是为什么我需要检查字符串中是否有数字。如何将条件添加到sum函数的列表中。我还想使用sum函数,我不想只迭代列表,然后添加到一个变量中。
发布于 2012-04-11 23:29:29
如何将条件添加到sum函数的列表中。
您就快到了,除了if出现在末尾:
sum(int(i.replace(',','')) for i in list if re.search(r'\d', i))话虽如此,但总体方法并不是万无一失的。它会在混合了数字和其他字符(例如'a1')的输入上阻塞。
此外,使用逗号作为千位分隔符也不是通用的。Some locales使用它来标记小数点。在这些区域设置中,您的代码将为其中包含逗号的数字生成不正确的值。
发布于 2012-04-11 23:29:01
也许是这样的
def safeIntToSum(x):
try: return int(x.replace(",",""))
except: return 0
print sum([safeIntToSum(x) for x in list])https://stackoverflow.com/questions/10109013
复制相似问题