我有一个问题正在消耗我的大脑。假设变量I存储一个序列,变量II存储另一个序列,变量III存储另一个序列。变量1将代表数字1,下一个2和下一个3;然后我有另一个键变量,它具有这3个序列的随机字符。考虑到这个事实,我可以很容易地将这个关键变量的字符翻译成相应的数字。在这个例子中,x = 'afh'
,than,也就是说x = '123'
,因为A或B或C=1,依此类推。在
现在是复杂的部分:
当键变量x被转换成数字时,每个字符都是单独的,我也可以从结果中随机返回字符。例如:x = '123'
,那么我可以返回一个列表,比如['a','e','f']
,或者{random.choice()
。由此,我还不知道该怎么做:
如何将变量I、II、III的所有可能的变化附加到列表中。例如:
['adg','beh','cfi','aei','ceg',...]
我知道如何打印无休止的随机组合,但在这种情况下,我会重复,我不想要它们。我想把I,II和III之间所有可能的变化都加到一个列表中,因为当它们被转换成数字时,我可以从相应的序列中返回任何字符。我希望我的例子是可以自我解释的。非常感谢大家的关注!在
^{pr2}$输出为:
^{3}$
下面是我如何重写你的代码。像你这样冗长的if语句是一种很大的代码气味。我把序列放入一个元组中并使用一个循环。我还用列表理解替换了第二个循环。在
顺便说一句,如果您像一个明智的人一样使用基于零的索引,您也可以简化索引。在
另外,一定要检查
itertools
模块,尤其是product
函数。现在还不清楚你到底是什么意思,但是这个产品提供了一系列序列中每一项的所有组合。在非常感谢锑!答案正是itertools的product()。它的代码要简单得多:
输出结果正是我想要的,所有可能的组合:
^{pr2}$相关问题 更多 >
编程相关推荐