从两个列表中选择一个随机数,并从其中一个列表中有50/50的机会成为python 3.x

时间:2018-10-31 13:10:27

标签: python python-3.x

说我有一个列表[1,2,3,4,5,6],我将其分为两个列表A = [1,2,3]和B = [4,5,6]。我该如何做一个从任一列表中选择一个值的函数,以便它有50%的可能性是列表A的第一项,而有50%的可能性是列表B的第一项,以此类推。数字。

如果可以的话,新列表中的第一项将是两个半列表中的一个的第一项。

然后将结果附加到新列表中并重新组合。

例如新列表的第一个数字是1或4,第二个数字是2或5,第三个数字是3或6,并将剩余的数字附加到新列表的末尾

对不起,如果我不清楚这是一项作业,那会有点令人困惑。

4 个答案:

答案 0 :(得分:1)

您可以这样做:

import random

lst = [1,2,3,4,5,6]
t = len(lst)//2
l1, l2 = lst[:t], lst[t:]

sel = [random.choice(x) for x in zip(l1, l2)]

产生:

[4, 2, 3]

您谈论的洗牌列表中的部分我并不完全关注。但是,创建的列表sel可以随机洗牌,如果您的意思是这样做的话:

random.shuffle(sel)  # don't assign it to sel. Works in-place!

有关更多信息和选项,请查看Python的random模块。

答案 1 :(得分:0)

import random

list_a = [1, 2, 3]
list_b = [4, 5, 6]
new_list = []
number_of_items = 3
list_of_available_lists = [list_a, list_b]
for i in range(number_of_items):
    the_list = random.choice(list_of_available_lists)
    the_choice = random.choice(the_list)
    new_list.append(the_choice)
print(new_list)

答案 2 :(得分:0)

使用random.choice(your_list)从列表中随机选择。这是doc

答案 3 :(得分:0)

import random

original = [1,2,3,4,5,6]
A = original[0:3]
B = original[3:6]
shuffled = []

for i in range(len(A)):
    if random.randint(1, 2) == 1:
        shuffled.append(A[i])
    else:
        shuffled.append(B[i])

print(shuffled)