📅  最后修改于: 2023-12-03 15:19:35.971000             🧑  作者: Mango
Python联合洗牌是一种用于打乱一组数据的算法。 在联合洗牌中,我们可以混合两个或多个列表,以创建一个新的随机列表,其中包含两个或多个原始列表的元素。
下面是 Python 中实现联合洗牌的示例代码:
import random
def shuffle_lists(*args):
res = [[] for _ in args]
max_len = max([len(lst) for lst in args])
for idx, lst in enumerate(args):
lst_len = len(lst)
if lst_len < max_len:
lst += [None] * (max_len-lst_len)
random.shuffle(lst)
for i in range(max_len):
if lst[i] is not None:
res[idx].append(lst[i])
return tuple(res)
该代码接受任意数量的参数,也就是列表,并返回一个包含所有列表元素的新列表。 使用 random.shuffle()
函数按随机顺序打乱列表,然后将相应的元素添加到新列表中。
现在我们可以使用 shuffle_lists()
函数来混合两个或多个列表。
下面是一个使用两个列表的示例:
lst1 = [1, 2, 3, 4, 5]
lst2 = [6, 7, 8, 9, 10]
res = shuffle_lists(lst1, lst2)
print(res)
这将打印如下结果:
([1, 6, 2, 7, 3], [4, 8, 5, 9, 10])
结果是一个包含两个元素的元组。 元素的顺序是随机的,并且列表中的元素被随机分配到元组的两个元素中。
如果您有更多的列表,您可以将它们作为 shuffle_lists()
的额外参数传递即可。
Python联合洗牌是一种易于实现的打乱多个列表的算法。 它基于随机化并使用内置的 random.shuffle()
函数以随机顺序打乱列表中的元素。 该算法非常有用,可以在许多场景中使用,例如生成测试数据或创建加密密钥。