Itertools组合产生产品清单

时间:2019-06-18 04:40:36

标签: python itertools

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

您好,我正在尝试按特定顺序创建产品的所有组合。实际问题很大,因此在这里我用相同的概念对其进行了简化。第一次使用itertools。

说我正在卖一件T恤。它有3种尺寸(s,m,l),3种颜色(w,b,g)和2种合身(苗条,宽松)。将这些内容放在一起即可构成产品代码,但必须按照大小-颜色-适合的顺序。

所以组合是:

S-W-SLIM

S-W-BAGGY

S-B-SLIM

S-B-BAGGY

我的程序需要输出所有代码,应该是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]

我看过Combines()和permutations(),但是它们只接受2个输入参数?

不确定TIA从这里出发。

1 个答案:

答案 0 :(得分:1)

将其转换为列表:

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']