import random
def shuffle(L):
random.shuffle(A)
random.shuffle(B)
说我的L是[“1”,“2”,“3”,“4”,“5”,“6”]
我将列表分为[1,2,3]和[4,5,6]
如何以随机顺序组合这两个列表,但确保新列表中的第一个数字是A或B中的第一个数字
但确保每次运行该函数时,都会生成一个新列表,该列表仍然以“1”或“4”作为第一个元素
答案 0 :(得分:0)
您可以使用random.randint()
和random.shuffle()
执行此操作:
import random
l1, l2 = [1, 2, 3], [4, 5, 6]
random_num = random.randint(0, 1) # will randomly return `0` or `1`
if random_num:
first_elem, temp_list = l1[0], l1[1:]+l2
else:
first_elem, temp_list = l2[0], l1+l2[1:]
random.shuffle(temp_list) # randomly shuffles the list
new_list = [first_elem] + temp_list
# Value of "new_list":
# [4, 3, 2, 5, 6, 1]
答案 1 :(得分:0)
以下是n
部分中列表拆分的通用答案:
from random import choice
def shuff(lst, n=2):
size = len(lst) // n
subs = (lst[i:i+size] for i in range(0, len(lst), size))
return [choice(sub) for sub in zip(*subs)]
然后您可以像这样使用此功能:
lst = [1, 2, 3, 4, 5, 6]
print(shuff(lst, 2))
# [4, 2, 3]
print(shuff(lst, 3))
# [5, 6]