Python 正则表达式,求和

Python 正则表达式,求和,python,regex,python-2.7,Python,Regex,Python 2.7,我正在研究一个问题,如何将文本文件中的所有数字相加。我已经解决了这个问题,但我知道我可以进一步整合代码 x = re.findall('[0-9]+',opened.read()) x = [int(i) for i in x] print sum(x) 我想做这样的事,但我不知道: print sum([int(i) for i in re.findall('[0-9]+',opened.read())]) 谢谢 你大部分时间都在那里。您可以删除括号(以求和不带中间列表)的生成器表达式,并

我正在研究一个问题,如何将文本文件中的所有数字相加。我已经解决了这个问题,但我知道我可以进一步整合代码

x = re.findall('[0-9]+',opened.read())
x = [int(i) for i in x]
print sum(x)
我想做这样的事,但我不知道:

print sum([int(i) for i in re.findall('[0-9]+',opened.read())])

谢谢

你大部分时间都在那里。您可以删除括号(以
求和
不带中间
列表
)的生成器表达式,并且可以使用
映射
(理想情况下,Py3
映射
,以避免中间
列表
)以实现简洁性/性能(只有性能增益,因为
int
是用C实现的内置函数;通常
map
较慢):


为什么python人希望所有东西都放在一行上?它不能提高可读性或效率(在大多数情况下)。就像他们说的,如果它没有坏,就不要修复它。@cricket_007试图尽我所能学习它!
# genexpr
print sum(int(i) for i in re.findall(r'\d+', opened.read()))
# Or with finditer to avoid intermediate list
print sum(int(m.group()) for m in re.finditer(r'\d+', opened.read()))

# map
from future_builtins import map  # Only on Py2

print sum(map(int, re.findall(r'\d+', opened.read())))