python - 如何在不对元素位置进行硬编码的情况下嵌套循环

标签 python for-loop

我的问题是循环遍历一个长数字,以便找到该数字中 5 个连续数字的最大乘积。我有一个解决方案,但它目前涉及元素位置的硬编码,感觉/看起来很丑陋并且不可扩展(如果我想要 10 个连续项的总和怎么办?)。有没有一种方法可以将此解决方案“Python”起来并以某种方式嵌套或优化它?

n = 82166370484403199890008895243450658541227588666881

N = str(n)
Pro = 0
for i in range(0, len(N) - 4):
    TemPro= int(N[i])*int(N[i+1])*int(N[i+2])*int(N[i+3])*int(N[i+4])
    if TemPro> Pro :
        Pro = TemPro
print(Pro )

操作系统:Windows 7
语言:Python 3

最佳答案

N 的切片上使用 reduce 的完美案例:

from functools import reduce # python 3
nb_terms = 5
for i in range(0, len(N) - nb_terms - 1):
    TemPro= reduce(lambda x,y:int(x)*int(y),N[i:i+nb_terms])
    if TemPro> Pro :
        Pro = TemPro
print(Pro)

reduce 会将所有项相乘,没有可见的循环,也没有对项的数量进行硬编码。

关于python - 如何在不对元素位置进行硬编码的情况下嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622471/

相关文章:

python - 用numpy保存列表时内存不足

javascript - 如何使用 1 个公共(public) json 字段(嵌套数组)映射 2 个数组

python - 遍历包含字典的列表并以某种方式显示它

python - Pandas groupby 操作

python - 从 APScheduler 收集 future

python - flask + Jinja : Convert UTC to Local Timezone

python - 如何在python中重置for循环的索引号

java - 如何获取列表的下三个元素

batch-file - 在批处理中读取具有特殊字符的文件

python - 使用过滤器和生成器在 python 中生成无限素数