我有三个列表Main
,Supplemental
和Auxiliary
,所有列表都包含多个字符串。
我试图从这些随机元素的组合中生成一个新字符串。 Main
将具有已定义的索引,但其他索引应随机选择。这些出来的顺序也应该是随机的。
这将完成工作:
main = main[5]
supp = random.choice(supplemental)
aux = random.choice(auxiliary)
all = [main, supp, aux]
print(random.choice(all) + random.choice(all) + random.choice(all))
然而,这并不是特别优雅,并且很有可能发生碰撞。
有没有更好的方式来考虑这个问题,而且还有一个不会导致选择列表的方法被选中?
答案 0 :(得分:1)
好像你想要random.shuffle
你的物品:
>>> import random
>>> all_ = ['a', 'b', 'c'] # I use explicit strings instead of your [main, supp, aux]
>>> random.shuffle(all_)
>>> print(''.join(all_))
cba
>>> print(''.join(all_))
bac
shuffle
如果您的列表包含重复的项目,则不会发生冲突。
random.sample
。它既不会更改原始列表,也可以在输入包含3个以上的项目时使用,并且您只想要3:
>>> print(''.join(random.sample(all_, 3)))
bca