简介
在 Python 中,列表是项目的有序集合。有时,我们可能希望随机化列表中项目的顺序。这对于游戏、模拟或任何其他我们希望引入随机元素的情况可能很有用。在这个挑战中,你将编写一个函数来打乱列表中的项目。
在 Python 中,列表是项目的有序集合。有时,我们可能希望随机化列表中项目的顺序。这对于游戏、模拟或任何其他我们希望引入随机元素的情况可能很有用。在这个挑战中,你将编写一个函数来打乱列表中的项目。
编写一个函数 shuffle(lst),它接受一个列表作为输入,并返回一个新列表,其中包含相同的元素,但顺序是随机的。你的函数应该使用 Fisher-Yates 算法来打乱列表中的元素。
Fisher-Yates 算法的工作原理如下:
你的函数不应修改原始列表。相反,它应该创建一个包含打乱后元素的新列表。
你可以假设输入列表将至少包含一个元素。
from copy import deepcopy
from random import randint
def shuffle(lst):
temp_lst = deepcopy(lst)
m = len(temp_lst)
while (m):
m -= 1
i = randint(0, m)
temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
return temp_lst
foo = [1, 2, 3]
shuffle(foo) ## [2, 3, 1], foo = [1, 2, 3]
在这个挑战中,你编写了一个使用 Fisher-Yates 算法打乱列表中元素顺序的函数。该算法是一种简单且高效的随机化列表中元素顺序的方法。通过完成这个挑战,你对 Python 中列表的工作原理以及如何使用函数来操作它们有了更深入的理解。