Python小技之组合不同列表, 获取所有结果

2022-05-31 19:40:35 浏览数 (1)

Python的前辈们封装了非常多的特别简单又高效的方法

只不过不常用, 也不知道而已

今天就介绍下itertools的product函数

代码语言:javascript复制
list_a = [1, 2, 3]
list_b = [",", ".", "?"]
list_c = ["a", "b", "c"]

正常情况下, 如果要找出上面几个列表共有多少种组合, 我们要以下这样

代码语言:javascript复制
for a in list_a:
    for b in list_b:
       for c in list_c:
           print(f"{a}{b}{c}")

结果是:

代码语言:javascript复制
1,a
1,b
1,c
...

如果只有三个循环的话, 这样写也没什么, 如果20个呢, 上百个呢, 结果可想而知, 一个长达几百行的循环

接下来, 就是我们的神器出场了

上面那个例子, 摇身一变

代码语言:javascript复制
import itertools
for a,b,c in itertools.product(list_a, list_b, list_c):
    print(f"{a}{b}{c}")

就成了这样, 结果跟上面的几行一样效果, 如下

代码语言:javascript复制
1,a
1,b
1,c
...

如果是循环相同的迭代器, 还可以这样写

代码语言:javascript复制
for a,b,c in itertools.product(list_a, repeat=3):
    print(f"{a}{b}{c}")

结果如下:

代码语言:javascript复制
111
112
113
...

注意: itertools.product(),

这里其实得到的是一个元组, 例(1,1,1)(1,1,2)....

好了, 今天这个神奇的模块就到这里了, 你get到了嘛?

0 人点赞