猿问

Itertools 组合生成产品列表

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


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


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


所以组合是:


SW-超薄


SW-BAGGY


SB-超薄


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]

我看过combinations() 和permutations() 但它们只需要2 个输入参数?


不确定从这里去哪里,TIA。


慕虎7371278
浏览 196回答 1
1回答

慕村225694

将其转换为列表:print(list(options))然后它会输出:[('S',&nbsp;'W',&nbsp;'slim'),&nbsp;('S',&nbsp;'W',&nbsp;'baggy'),&nbsp;('S',&nbsp;'B',&nbsp;'slim'),&nbsp;('S',&nbsp;'B',&nbsp;'baggy'),&nbsp;('S',&nbsp;'G',&nbsp;'slim'),&nbsp;('S',&nbsp;'G',&nbsp;'baggy'),&nbsp;('M',&nbsp;'W',&nbsp;'slim'),&nbsp;('M',&nbsp;'W',&nbsp;'baggy'),&nbsp;('M',&nbsp;'B',&nbsp;'slim'),&nbsp;('M',&nbsp;'B',&nbsp;'baggy'),&nbsp;('M',&nbsp;'G',&nbsp;'slim'),&nbsp;('M',&nbsp;'G',&nbsp;'baggy'),&nbsp;('L',&nbsp;'W',&nbsp;'slim'),&nbsp;('L',&nbsp;'W',&nbsp;'baggy'),&nbsp;('L',&nbsp;'B',&nbsp;'slim'),&nbsp;('L',&nbsp;'B',&nbsp;'baggy'),&nbsp;('L',&nbsp;'G',&nbsp;'slim'),&nbsp;('L',&nbsp;'G',&nbsp;'baggy')]此外,您可以跳过 的最后一个参数[3]:options&nbsp;=&nbsp;itertools.product(size,&nbsp;colour,&nbsp;fit)它将输出相同,您可以检查长度,它会是18.如果您需要在它们之间划线:options&nbsp;=&nbsp;['-'.join(i)&nbsp;for&nbsp;i&nbsp;in&nbsp;itertools.product(size,&nbsp;colour,&nbsp;fit)]和输出:print(options)将是:['S-W-slim',&nbsp;'S-W-baggy',&nbsp;'S-B-slim',&nbsp;'S-B-baggy',&nbsp;'S-G-slim',&nbsp;'S-G-baggy',&nbsp;'M-W-slim',&nbsp;'M-W-baggy',&nbsp;'M-B-slim',&nbsp;'M-B-baggy',&nbsp;'M-G-slim',&nbsp;'M-G-baggy',&nbsp;'L-W-slim',&nbsp;'L-W-baggy',&nbsp;'L-B-slim',&nbsp;'L-B-baggy',&nbsp;'L-G-slim',&nbsp;'L-G-baggy']
随时随地看视频慕课网APP

相关分类

Python
我要回答