我有两个列表a
和b
,我需要选择一个随机元素a[i]
和b[i]
并生成z
。
a = [1, 0, 1, 1, 0, 1]
b = [1, 1, 0, 1, 0, 0]
z = [1, 0, 1, 1, 0, 0]
我使用了下面提到的代码:
import random
z = []
for i in range(6):
value = random(a[i],b[i])
z.append(value)
print z
我收到以下错误:
TypeError:'module'对象不可调用
你可以使用random.choice
(docs here)。
从非空序列seq返回一个随机元素。
它从值列表中选择一个值。对于每次迭代,您只需创建一个a[i]
和b[i]
列表。
for i in range(6):
value = random.choice([a[i],b[i]])
z.append(value)
print( z)
# [1, 1, 1, 1, 0, 0]
另一个选择是使用random.sample
这里k=1
和[a[i],b[i]]
是如下人口
返回从总体序列或集合中选择的k长度的唯一元素列表
value = random.sample([a[i],b[i]], 1)
z.append(value[0])
这里使用value[0]
,因为value
是一个包含单个元素的列表,因此通过使用[0]
,您可以获得没有列表的元素。
你把random
称为它是一个函数,实际上它是一个模块。您需要使用random.choice
来选择以下两个选项之一:
value = random.choice([a[i],b[i]])
首先,您必须导入随机模块。
import random
然后你可以调用它的任何方法:
random.random()
此外你应该选择random.choice()
:
value = random.sample([a[i],b[i]], 1)