我试图根据具体的规则为复合材料的发展(在化学领域)制定一个全面的组成表。
规则是
- 表中的数字表示复合材料中每种原材料的重量百分比
- 有三种原材料(A、B、C),我最多可以用两种材料来制作复合材料
- 表中的每个数字必须是x的倍数,每行的和必须小于或等于y
- 我必须写出符合上述规则的每一种可能的组合。
例如,如果x=1和y=2,我可以制作一个如下所示的表格。
Material A Material B Material C
Composite1 0 0 0
Composite2 1 0 0
Composite3 0 1 0
Composite4 0 0 1
Composite5 1 1 0
Composite6 1 0 1
Composite7 0 1 1
Composite8 2 0 0
Composite9 0 2 0
Composite10 0 0 2
(实际上,材料D的重量百分比被省略,因此没有必要认为一行的总和不是100。
当x和y是小数字时,我可以手动制作表格(使用Excel),但如果x和y是大数字,我就不能。因此,我想知道Python代码,它可以有效地制作表格,而不管x和y。
1条答案
按热度按时间blmhpbnm1#
您可以使用
itertools.product
,然后使用list comprehension过滤掉超出限制的组合。**
get_compositions(['A', 'B','C'], 1, 2)
**应返回