python - Itertools组合产生产品列表

标签 python python-itertools

按顺序创建项目属性组合。

您好,我正在尝试按特定顺序创建产品的所有组合。实际问题相当大,所以我在这里简化了它,但概念相同。第一次使用itertools。

假设我正在卖一件 T 恤。它有 3 种尺寸(小、中、大)、3 种颜色(宽、宽、克)和 2 种款式(修身、宽松)。将这些放在一起就形成了产品代码,但必须按照尺码-颜色-适合的顺序。

所以组合是:

S-W-SLIM

S-W-宽松

S-B-SLIM

S-B-宽松

等等

我的程序需要输出所有的代码,应该是 3x3x2 = 18 个组合。

import itertools

size = ['S','M','L']
colour = ['W','B','G']
fit = ['slim','baggy']


options = itertools.product(size, colour,fit,[3])

print (options)
<itertools.product object at 0x03718E68>
[Finished in 0.1s]

我已经查看过combinations()和permutations(),但它们只接受2个输入参数?

不确定接下来该去哪里,TIA。

最佳答案

将其转换为列表:

print(list(options))

然后会输出:

[('S', 'W', 'slim'), ('S', 'W', 'baggy'), ('S', 'B', 'slim'), ('S', 'B', 'baggy'), ('S', 'G', 'slim'), ('S', 'G', 'baggy'), ('M', 'W', 'slim'), ('M', 'W', 'baggy'), ('M', 'B', 'slim'), ('M', 'B', 'baggy'), ('M', 'G', 'slim'), ('M', 'G', 'baggy'), ('L', 'W', 'slim'), ('L', 'W', 'baggy'), ('L', 'B', 'slim'), ('L', 'B', 'baggy'), ('L', 'G', 'slim'), ('L', 'G', 'baggy')]

此外,您可以跳过[3]的最后一个参数:

options = itertools.product(size, colour, fit)

它会输出相同的内容,你可以检查长度,它会是18

如果您需要在它们之间添加虚线:

options = ['-'.join(i) for i in itertools.product(size, colour, fit)]

输出:

print(options)

将是:

['S-W-slim', 'S-W-baggy', 'S-B-slim', 'S-B-baggy', 'S-G-slim', 'S-G-baggy', 'M-W-slim', 'M-W-baggy', 'M-B-slim', 'M-B-baggy', 'M-G-slim', 'M-G-baggy', 'L-W-slim', 'L-W-baggy', 'L-B-slim', 'L-B-baggy', 'L-G-slim', 'L-G-baggy']

关于python - Itertools组合产生产品列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56641859/

相关文章:

python - 为什么它不打印没有重复元组的元组列表?

python - 来自 dict 的可变函数调用

python - 在python中,如何按元素的频率对列表进行排序

Python 模块未出现在 sys.modules 中

python - Openshift:OSError Errno 98 无法更新服务器

python - 在django模型中使用python super 函数

Python 使用 itertools.product 创建列表?

python - Python 3 中 float 的精确累积和

python - itertools groupby 对象未正确输出

python - 如何将 Python 的 itertools.product 库从列表理解转换为普通的 for 循环?