说我有一个列表[1,2,3,4,5,6],我将其分为两个列表A = [1,2,3]和B = [4,5,6]。我该如何做一个从任一列表中选择一个值的函数,以便它有50%的可能性是列表A的第一项,而有50%的可能性是列表B的第一项,以此类推。数字。
如果可以的话,新列表中的第一项将是两个半列表中的一个的第一项。
然后将结果附加到新列表中并重新组合。
例如新列表的第一个数字是1或4,第二个数字是2或5,第三个数字是3或6,并将剩余的数字附加到新列表的末尾
对不起,如果我不清楚这是一项作业,那会有点令人困惑。
答案 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)