首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表乐透行

列表乐透行
EN

Code Review用户
提问于 2020-11-03 10:52:16
回答 2查看 548关注 0票数 12

如果在乐透中从39个数字中选择七个数字,则任务是列出每个乐透行的列表。有比我的解决方案更优雅的方法吗?

代码语言:javascript
复制
rows = []
for a in range(1,40):
    for b in range(a+1,40):
        for c in range(b+1,40):
            for d in range(c+1,40):
                for e in range(d+1,40):
                    for f in range(e+1,40):
                        for g in range(f+1,40):
                           rows.append([a,b,c,d,e,f,g])
EN

回答 2

Code Review用户

回答已采纳

发布于 2020-11-03 10:59:07

你可以用itertools.combinations

代码语言:javascript
复制
import itertools

rows = list(itertools.combinations(range(1, 40), 7))

如果您想知道如何在不使用内置的情况下实现这一点,只需阅读文档中itertools.combinations的示例实现即可。

票数 14
EN

Code Review用户

发布于 2020-11-03 12:23:56

有这么多缩进的代码从来都不是优雅的,而且很难维护。

有一个叫做不要重复自己的原则的编程原则,有时被称为干代码。如果您发现自己多次重复相同的代码,最好将其封装在一个函数中。如果有可能循环代码,这也可以减少重复。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/251535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档