在python中随机连接两个数组直到满足限制长度

时间:2018-07-26 13:28:03

标签: python

说我有两个数组:

a = [1, 1, 1] and 
b = [0, 0]

我想将它们随机连接在一个单独的变量c中,直到达到所需的c长度。像这样:

N = 10

c = random_concatenating((a, b), N)

[1, 1, 1, 0, 0, 1, 1, 1, 0, 0] 

3 个答案:

答案 0 :(得分:0)

您可以使用itertools.cycle将列表重复多次,然后将它们切成所需的列表

>>> from itertools import cycle, islice
>>> a = [1, 1, 1]
>>> b = [0, 0]
>>> N = 10
>>> list(islice(cycle(a+b), N))
[1, 1, 1, 0, 0, 1, 1, 1, 0, 0]

答案 1 :(得分:0)

详细版本:

import random

a = [1, 1, 1]
b = [0, 0]

N = 10

def random_concatenating(iterable, n):
    rv = []
    l = [*iterable]
    print(l)
    while len(rv) < n:
        rv.extend(random.choice(l))
    return rv[:n]

c = random_concatenating((a, b), N)
print(c)

打印(例如):

[1, 1, 1, 0, 0, 1, 1, 1, 1, 1]

答案 2 :(得分:-1)

这是一种方法。使用random.choice

import random

a = [1, 1, 1] 
b = [0, 0]
N = 10
foo = a + b

c = []
for i in range(N):
    c.append(random.choice(foo))
print(c)

输出:

[0, 1, 1, 1, 1, 0, 1, 1, 1, 1]

单行

c = [random.choice(foo) for i in range(N)]