您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-为什么random.shuffle返回None?

Python-为什么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']
python 2022/1/1 18:24:57 有178人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶