繁体   English   中英

Itertools 组合以生成产品列表

[英]Itertools combinations to produce product list

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

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

假设我在卖一件 T 恤。 它有 3 种尺寸(s、m、l)、3 种颜色(w、b、g)和 2 种款式(修身、宽松)。 将这些放在一起构成产品代码,但必须按尺寸-颜色-合身的顺序排列。

所以组合是:

SW-SLIM

SW-Baggy

SB-SLIM

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

我看过组合()和排列(),但它们只需要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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM