我收到一个字符串列表作为输入,并且需要返回具有这些相同字符串但随机顺序的列表。我必须允许重复-同一字符串在输入中可能出现一次或多次,并且在输出中必须出现相同的次数。
我看到了几种“强力”方法(使用循环,禁止使用),我目前正在使用其中一种。但是,知道Python可能会完成一项工作,对吧?
Answers:
>>> import random
>>> x = [1, 2, 3, 4, 3, 4]
>>> random.shuffle(x)
>>> x
[4, 4, 3, 1, 2, 3]
>>> random.shuffle(x)
>>> x
[3, 4, 2, 1, 3, 4]
random.shuffle
将列表拖曳到位。在Python 3中,range(5)
是生成器,而不是列表。在Python 2中,range(5)
列表是一个列表,但是改组已经到位,因此它改组了一个临时列表,该列表会立即被丢弃。您可以做x = range(5); random.shuffle(x)
然后使用x
。
看起来这是最简单的方法,即使不是最真正的随机方法(此问题也可以更全面地解释局限性):http : //docs.python.org/library/random.html#random.shuffle
您必须将字符串读入数组,然后使用改组算法。我推荐Fisher-Yates洗牌