【发布时间】:2019-04-03 07:43:37
【问题描述】:
我必须生成具有不同变量的多个反应。它们有 3 个元素。我们称它们为B、S 和H。它们都以B1 开头。如果至少有一个B,则可以将S 附加到元素上。所以它可以是B1S1 或B2S2 或B2S1 等...但不是B1S2。 H 也是如此。 B1S1H1 或 B2S2H1 或 B4S1H1 但绝不是 B2S2H3。最后的变体是B5S5H5。我试过itertools.product。但是我不知道如何摆脱不符合我条件的元素以及如何添加下一个元素。这是我的代码:
import itertools
a = list(itertools.product([1, 2, 3, 4], repeat=4))
#print (a)
met = open('random_dat.dat', 'w')
met.write('Reactions')
met.write('\n')
for i in range(1,256):
met.write('\n')
met.write('%s: B%sS%sH%s -> B%sS%sH%s' %(i, a[i][3], a[i][2], a[i][1], a[i][3], a[i][2], a[i][1]))
met.write('\n')
met.close()
【问题讨论】:
-
然后拆分字母和数字,将数字存储在列表中,并确保列表是降序的。如果不是这种情况,请删除示例
-
它不是很大,为什么不使用 3 个简单的嵌套循环呢?