如何在打乱列表元素顺序的同时,保留原始列表?
要在打乱列表元素顺序的同时保留原始列表,关键在于不能直接对原始列表使用 random.shuffle() 函数,因为该函数会在原地修改列表。你可以先创建原始列表的副本,然后对副本进行打乱操作。以下为你介绍几种不同的创建副本并打乱的方法:
方法一:使用切片操作创建副本
python
import random
# 原始列表
original_list = [1, 2, 3, 4, 5]
# 使用切片操作创建副本
copied_list = original_list[:]
# 打乱副本列表的元素顺序
random.shuffle(copied_list)
print("原始列表:", original_list)
print("打乱后的列表:", copied_list)
在上述代码中,original_list[:] 这种切片操作会创建一个新的列表对象,其元素与原始列表相同。之后对 copied_list 调用 random.shuffle() 函数打乱元素顺序,这样原始列表 original_list 就不会受到影响。
方法二:使用 list() 函数创建副本
python
import random
# 原始列表
original_list = [1, 2, 3, 4, 5]
# 使用 list() 函数创建副本
copied_list = list(original_list)
# 打乱副本列表的元素顺序
random.shuffle(copied_list)
print("原始列表:", original_list)
print("打乱后的列表:", copied_list)
这里通过 list(original_list) 函数将原始列表作为参数传入,从而创建了一个新的列表副本 copied_list。然后对副本进行打乱操作,保留了原始列表的顺序。
方法三:使用 copy 模块的 copy() 函数
python
import random
import copy
# 原始列表
original_list = [1, 2, 3, 4, 5]
# 使用 copy() 函数创建副本
copied_list = copy.copy(original_list)
# 打乱副本列表的元素顺序
random.shuffle(copied_list)
print("原始列表:", original_list)
print("打乱后的列表:", copied_list)
copy.copy() 函数同样可以创建列表的浅拷贝副本,之后对该副本进行打乱操作,原始列表依然保持不变