在Python中,可以使用zip()
函数和random.shuffle()
函数来以相同顺序shuffle两个list。下面将详细讲解这两种方法,并给出两个示例说明。
方法一:使用zip()和random.shuffle()函数
步骤
- 使用
zip()
函数将两个list打包成一个元组列表。 - 使用
random.shuffle()
函数对打包后的元组列表进行随机排序。 - 使用
zip()
函数将排序后的元组列表解包成两个list。
代码示例
import random
list1 = [1, 2, 3, 4, 5]
list2 = ['a', 'b', 'c', 'd', 'e']
# 打包成元组列表
combined = list(zip(list1, list2))
# 随机排序
random.shuffle(combined)
# 解包成两个列表
list1_shuffled, list2_shuffled = zip(*combined)
print(list1_shuffled) # 输出:(3, 2, 1, 5, 4)
print(list2_shuffled) # 输出:('c', 'b', 'a', 'e', 'd')
上述代码中,我们首先定义了两个listlist1
和list2
,然后使用zip()
函数将它们打包成一个元组列表combined
。接着,我们使用random.shuffle()
函数对combined
进行随机排序。最后,我们使用zip()
函数将排序后的元组列表解包成两个listlist1_shuffled
和list2_shuffled
。
方法二:使用numpy库
步骤
- 使用numpy库的
random.permutation()
函数生成一个随机排列的索引数组。 - 使用索引数组对两个list进行切片,得到两个随机排序的list。
代码示例
import numpy as np
list1 = [1, 2, 3, 4, 5]
list2 = ['a', 'b', 'c', 'd', 'e']
# 生成随机排列的索引数组
idx = np.random.permutation(len(list1))
# 切片得到随机排序的列表
list1_shuffled = [list1[i] for i in idx]
list2_shuffled = [list2[i] for i in idx]
print(list1_shuffled) # 输出:[2, 5, 1, 4, 3]
print(list2_shuffled) # 输出:['b', 'e', 'a', 'd', 'c']
上述代码中,我们首先定义了两个listlist1
和list2
,然后使用numpy库的random.permutation()
函数生成一个随机排列的索引数组idx
。接着,我们使用索引数组对list1
和list2
进行切片,得到两个随机排序的listlist1_shuffled
和list2_shuffled
。
总结:
本文介绍了两种在Python中以相同顺序shuffle两个list的方法,分别是使用zip()
函数和random.shuffle()
函数,以及使用numpy库的random.permutation()
函数。这两种方法都可以实现相同顺序shuffle两个list的功能,具体使用哪种方法取决于个人喜好和实际情况。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在python中以相同顺序shuffle两个list的方法 - Python技术站