Python random.shuffle() 原地打乱列表详解与源码解析
本文详细介绍Python中random.shuffle()函数的用法,重点说明其原地打乱列表顺序且不生成新列表的特性。通过代码示例展示具体操作,并深入解析源码实现逻辑,包括随机数生成器的可选参数及Fisher-Yates洗牌算法的核心步骤,帮助开发者正确使用该函数。
函数用法
random.shuffle()函数的主要作用是将列表中的元素顺序随机打乱。需要特别注意的一点是,该操作是原地进行的,即直接修改原列表的顺序,而不会创建并返回一个新的列表。
代码案例
# shuffle()使用样例 import random x = [i for i in range(10)] print(x) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(x) print(x) [2, 5, 4, 8, 0, 3, 7, 9, 1, 6]
源码及注释
def shuffle(self, x, random=None):
"""Shuffle list x in place, and return None.
原位打乱列表,不生成新的列表。
Optional argument random is a 0-argument
function returning a random float in [0.0, 1.0);
if it is the default None,
the standard random.random will be used.
可选参数random是一个从0到参数的函数,返回[0.0,1.0)中的随机浮点;
如果random是缺省值None,则将使用标准的random.random()。
"""
if random is None:
randbelow = self._randbelow
for i in reversed(range(1, len(x))):
# pick an element in x[:i+1] with which to exchange x[i]
j = randbelow(i + 1)
x[i], x[j] = x[j], x[i]
else:
_int = int
for i in reversed(range(1, len(x))):
# pick an element in x[:i+1] with which to exchange x[i]
j = _int(random() * (i + 1))
x[i], x[j] = x[j], x[i]
参考文献
[1]python中random.shuffle 使用
[2]Python中打乱列表顺序 random.shuffle()的使用方法
到此这篇关于Python中random.shuffle()的用法的文章就介绍到这了,更多相关python random.shuffle()内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









