【发布时间】:2018-06-06 14:51:13
【问题描述】:
我有一个名为 ModelsProduct 的函数,我在其中生成 "+/-" 和 "a,b,c,d, 的所有可能组合, e"。在下面的代码中 #producemodelsOne
modelsStepOne 选择 +/-
的所有 8 种组合modelsStepTwo 选择列表的第一个值 i-e a
modelsStepThree 选择列表的第一个值 i-e ('a','a')
modelsStepFour 选择列表的第一个值 i-e ('d','d')
modelsStepFive 选择列表的第一个值 i-e ('e','e')
组合 [+,+,+,+,+,+,+,+,a,a,a,d,d,e,e] 并针对所有可能的组合进行迭代。
以下是打印时的输出。
print (modelsOne[0])
print (modelsOne[1])
('+', '+', '+', '+', '+', '+', '+', '+', 'a', 'a', 'a', 'd ', 'd', 'e', 'e')
('+', '+', '+', '+', '+', '+', '+', '+', 'a', 'a', 'a', 'd ', 'e', 'e', 'e')
问题 如何在所有可能的组合中找到特定的索引值,例如 可能组合的索引值是什么 [+,-,+,+,+,+,-,-,a,a,b,c,c ,e,c] ?
这里是所有可能组合的代码
def ModelsProduct(modelsOne, modelsTwo, modelsThree, modelsFour,modelsFive):
modelsStepOne = list(product("+-",repeat = 8)) ## It gives total 12288 model combinations
modelsStepThree = [('a','a'),('a','b'),('a','c'),('a','d'),('a','e'),('b','b'),('b','c'),('b','d'),('b','e'),('c','c'),('c','d'),('c','e')]
modelsStepFour = [('d','d'),('d','e')]
modelsStepFive = [('e','e')]
#produce modelsOne
modelsStepTwo = [('a',),('b',)]
for one in modelsStepOne:
for two in modelsStepTwo:
for three in modelsStepThree:
for four in modelsStepFour:
for five in modelsStepFive:
modelsOne.append(one+two+three+four+five)
#produce modelsTwo
modelsStepTwo = [('a',),('b',)]
for one in modelsStepOne:
for two in modelsStepTwo:
for three in modelsStepThree:
for four in modelsStepFour:
for five in modelsStepFive:
modelsTwo.append(one+two+three+four+five)
#produce modelsThree
modelsStepTwo = [('a',),('b',)]
for one in modelsStepOne:
for two in modelsStepTwo:
for three in modelsStepThree:
for four in modelsStepFour:
for five in modelsStepFive:
modelsThree.append(one+two+three+four+five)
#ModelsFour
modelsStepTwo = [('a',),('d',)]
for one in modelsStepOne:
for two in modelsStepTwo:
for three in modelsStepThree:
for four in modelsStepFour:
for five in modelsStepFive:
modelsFour.append(one+two+three+four+five)
#ModelsFive
modelsStepTwo = [('a',),('e',)]
for one in modelsStepOne:
for two in modelsStepTwo:
for three in modelsStepThree:
for four in modelsStepFour:
for five in modelsStepFive:
modelsFive.append(one+two+three+four+five)
return modelsOne, modelsTwo, modelsThree, modelsFour, modelsFive
modelsOne, modelsTwo,modelsThree, modelsFour,modelsFive = ModelsProduct(modelsOne, modelsTwo, modelsThree, modelsFour, modelsFive)
【问题讨论】:
-
你可以使用
modelsOne.index()获取列表中元素的索引,所以如果你使用modelsOne.index(('+', '+', '+', '+', '+', '+', '+', '+', 'a', 'a', 'a', 'd', 'd', 'e', 'e'))你会得到0,这是你的问题吗? -
是的,我想打印任何可能组合的索引值。组合可以是 [+,-,+,-,+,-,-,-,a,a,b,c,d,d,e,] 或 [+,+,+,-,-,-, +,-,a,a,a,b,b,b,d]
标签: python arrays python-3.x list