【问题标题】:Regular Expression, Summing [duplicate]正则表达式,求和 [重复]
【发布时间】:2016-03-02 04:56:51
【问题描述】:

我正在解决一个问题,将文本文件中的所有数字相加。我已经解决了,但我知道我可以更多地整合代码。

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())])

谢谢!

【问题讨论】:

  • python 人为什么要把所有东西都放在一条线上?它不会提高可读性或效率(在大多数情况下)。就像他们说的,如果它没有坏,就不要修理它。
  • @cricket_007 尽我所能学习!

标签: python regex python-2.7


【解决方案1】:

你大部分时间都在那里。您可以删除括号(到 sum 没有中间 list 的生成器表达式),并且您可以使用 map(理想情况下 Py3 map 来避免中间 list)为了简洁/性能(只有一个性能增益,因为int 是在 C 中实现的内置;通常map 较慢):

# 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())))

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    相关资源
    最近更新 更多