在Python中随机化字符串列表的最佳方法

Roe*_*ler 73 python string random

我收到一个字符串列表作为输入,需要返回一个列表与这些相同的字符串,但按随机顺序.我必须允许重复 - 相同的字符串可能在输入中出现一次或多次,并且在输出中必须出现相同的次数.

我看到了几种"蛮力"的方法(使用循环,上帝禁止),其中一种我正在使用.然而,了解Python可能会有一个很酷的单行程来完成工作,对吗?

Joh*_*ica 190

>>> 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]
Run Code Online (Sandbox Code Playgroud)

  • @ user1019129`inndom.shuffle`随机播放列表.在Python 3中,`range(5)`是一个生成器,而不是一个列表.在Python 2中,`range(5)`是一个列表,但是shuffle就位,所以它会随机删除一个临时列表.你可以做`x = range(5); random.shuffle(x)`然后使用`x`. (7认同)

Mat*_*rog 13

看起来这是最简单的方法,如果不是最真实的随机(这个问题更全面地解释了限制):http://docs.python.org/library/random.html#random.shuffle


Yan*_* VR 6

给定一个字符串item,这是一个单行代码:

''.join([str(w) for w in random.sample(item, len(item))])
Run Code Online (Sandbox Code Playgroud)