为了均匀地随机播放序列,
random.shuffle()需要知道输入有多长时间。生成器无法提供此功能;您 必须 将其具体化为一个列表:
lst = list(yielding(x))random.shuffle(lst)for i in lst: print i
您可以改为使用
sorted()with
random.random()作为键:
for i in sorted(yielding(x), key=lambda k: random.random()): print i
但是由于这 也会 产生一个列表,因此沿这条路线走没什么意义。
演示:
>>> import random>>> x = [1,2,3,4,5,6,7,8,9]>>> sorted(iter(x), key=lambda k: random.random())[9, 7, 3, 2, 5, 4, 6, 1, 8]



