我正在努力编写更短、更Pythonic、更易读的Python代码。我已经有了一个可行的解决方案,可以找到1000位数字中5个连续数字的最大乘积,这是为 Project Euler 的问题8 设计的。(原题链接) 您对这个脚本的 Pythonic 版本有什么建议吗?
例如:下面的代码段必须有一个一行代码。我确定这里以前有过相关主题,但我不确定如何描述我下面要做的事情。
有什么建议吗?谢谢大家!
numstring = ''
for line in open('8.txt'):
numstring += line.rstrip()
nums = [int(x) for x in numstring]
best=0
for i in range(len(nums)-4):
subset = nums[i:i+5]
product=1
for x in subset:
product *= x
if product>best:
best=product
bestsubset=subset
print best
print bestsubset
例如:下面的代码段必须有一个一行代码。我确定这里以前有过相关主题,但我不确定如何描述我下面要做的事情。
numstring = ''
for line in open('8.txt'):
numstring += line.rstrip()
有什么建议吗?谢谢大家!
def prod(list): return reduce(lambda x,y: x*y, list)
- dylnoperator.mul
时,通常使用它比使用lambda
更有效率。对于像这样的东西,效率并不是很重要;您的计算机将在眨眼之间找到答案,因此您可以使用自己喜欢的方式。但是一般来说,在使用reduce()
或map()
等功能时,从operator
导入模块并不是坏事。 - steveha