Itertools组合生成产品列表

2024-07-03 06:17:14 发布

您现在位置:Python中文网/ 问答频道 /正文

按顺序创建项目属性的组合。你知道吗

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

假设我在卖一件t恤。它有3种尺寸(s、m、l)、3种颜色(w、b、g)和2种尺码(修身、宽松)。把这些放在一起就形成了产品代码,但必须按大小和颜色的顺序排列。你知道吗

所以这些组合是:

S-W-苗条

S-W-袋装

S-B-苗条

S-B-袋装

等等

我的程序需要输出所有的代码,应该是3x2=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个输入参数?你知道吗

不知道接下来该怎么办,蒂亚。你知道吗


Tags: 项目代码概念size属性顺序产品尺寸
1条回答
网友
1楼 · 发布于 2024-07-03 06:17:14

将其转换为列表:

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

相关问题 更多 >