创建一个列表,其中某个char出现一定次数

时间:2016-09-21 08:58:46

标签: python arrays list python-2.7

我在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

有更有效的方法吗?

2 个答案:

答案 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]

其中n0的数量,m1的数量

但是,如果您希望按随机顺序对列表进行随机播放,则可以使用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]