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

详细版本:

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]

您可以使用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]

这是一种方法。使用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)]

最新更新