我很惊讶我没有找到一种没有循环的方法,因为它似乎是一个非常标准的问题.
在python中工作,我有, colors = ["red","green","blue"]并且我想以随机顺序将这些元素放入长度为N的列表中.现在我正在使用:
import random
colors = ["red","green","blue"]
otherList = []
for i in range (10): # N=10
otherList.append(random.choice(colors))
Run Code Online (Sandbox Code Playgroud)
这返回:otherList = ["red","green","green","green","blue","green","red","green","green","blue"],这正是我想要的.我只是想找一个比较习惯的方式吗?有任何想法吗?看起来像random.sample可能就是答案,但我没有在文档中看到任何符合我需求的内容.
您可以使用列表理解:
[random.choice(colors) for i in range(10)] #xrange for python2 compatability
Run Code Online (Sandbox Code Playgroud)
或者random.sample()通过一些体操:
nrandom = 10
random.sample( colors*(nrandom//len(colors)+1), nrandom )
Run Code Online (Sandbox Code Playgroud)
虽然我认为这不比列表理解更好......