我收到一个字符串列表作为输入,需要返回一个包含这些相同字符串的列表,但是按随机顺序。我必须允许重复 - 相同的字符串可能在输入中出现一次或多次,并且在输出中必须出现相同的次数。
我看到了几种“蛮力”的方式(使用循环,上帝禁止),其中一种我正在使用。但是,了解Python可能会有一个很酷的单行程来完成工作,对吗?
答案 0 :(得分:187)
>>> 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]
答案 1 :(得分:13)
看起来这是最简单的方法,如果不是最真实随机的(this question更全面地解释了这些限制):http://docs.python.org/library/random.html#random.shuffle
答案 2 :(得分:4)
给定一个字符串 item ,这是一个单行:
''.join([str(w) for w in random.sample(item, len(item))])
答案 3 :(得分:3)
您必须将字符串读入数组,然后使用shuffling算法。我推荐Fisher-Yates shuffle
答案 4 :(得分:0)
import random
b = []
a = int(input(print("How many items you want to shuffle? ")))
for i in range(0, a):
n = input('Please enter a item: ')
b.append(n)
random.shuffle(b)
print(b)
答案 5 :(得分:0)
在python 3.8中,您可以使用海象帮助将其塞入两行 首先,您必须从字符串创建一个列表,并将其存储到变量中。然后,您可以使用随机将其随机播放。然后只需将列表重新加入字符串即可。
random.shuffle(x := list("abcdefghijklmnopqrstuvwxyz"))
x = "".join(x)