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

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

4

2 回答 2

3

如何在 sum 函数的列表中添加条件。

你快到了,除了if最后出现:

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

话虽如此,整体方法并不是万无一失的。它会阻塞将数字与其他字符(例如'a1')混合的输入。

此外,使用逗号作为千位分隔符并不普遍。一些语言环境使用它来标记小数点。在这些语言环境中,您的代码会为带有逗号的数字生成不正确的值。

于 2012-04-11T15:29:29.010 回答
1

也许是这样的

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

print sum([safeIntToSum(x) for x in list])
于 2012-04-11T15:29:00.553 回答