为什么random.shuffle返回None?

为什么random.shuffle返回None?,第1张

为什么random.shuffle返回None?

random.shuffle()
更改
x
列表 到位

在原位更改结构的Python API方法通常返回

None
,而不是修改后的数据结构。

如果要基于现有列表创建 新的
随机混排列表,并按顺序保留现有列表,则可以使用

random.sample()
输入的完整长度

x = ['foo', 'bar', 'black', 'sheep']random.sample(x, len(x))

您还可以将

sorted()
with
random.random()
用于排序键:

shuffled = sorted(x, key=lambda k: random.random())

但这会调用排序(O(NlogN) *** 作),而采样到输入长度仅需要O(N) *** 作(与

random.shuffle()
所使用的过程相同,即从收缩池中换出随机值)。

演示:

>>> import random>>> x = ['foo', 'bar', 'black', 'sheep']>>> random.sample(x, len(x))['bar', 'sheep', 'black', 'foo']>>> sorted(x, key=lambda k: random.random())['sheep', 'foo', 'black', 'bar']>>> x['foo', 'bar', 'black', 'sheep']


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5652584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存