我在python 2.7中创建一个列表 该列表由1和0组成,但我需要1在列表中随机出现并设定一定次数。
这是我发现这样做的方法,但是创建列表可能需要很长时间
numcor = 0
while numcor != (wordlen): #wordlen being the set amount of times
usewrong = []
for l in list(mymap):
if l == "L": #L is my map an telling how long the list needs to be
use = random.choice((True, False))
if use == True:
usewrong.append(0)
else:
usewrong.append(1)
numcor = numcor + 1
有更有效的方法吗?
答案 0 :(得分:1)
使用0
和' 1创建列表的简单方法是:
>>> n, m = 5, 10
>>> [0]*n + [1]*m
[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
其中n
是0
的数量,m
是1
的数量
但是,如果您希望按随机顺序对列表进行随机播放,则可以使用random.shuffle()
作为:
>>> from random import shuffle
>>> mylist = [0]*n + [1]*m # n and m are from above example
>>> shuffle(mylist)
>>> mylist
[1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1]
答案 1 :(得分:1)
这是一种不同的方法:
from random import *
# create a list full of 0's
ls = [0 for _ in range(10)]
# pick e.g. 3 non-duplicate random indexes in range(len(ls))
random_indexes = sample(range(len(ls)), 3)
# create in-place our random list which contains 3 1's in random indexes
ls = [1 if (i in random_indexes) else ls[i] for i,j in enumerate(ls)]
输出将是:
>>> ls
[0, 1, 0, 1, 0, 0, 0, 0, 1, 0]