首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在功能上洗牌列表

在功能上洗牌列表
EN

Stack Overflow用户
提问于 2017-11-06 11:53:33
回答 2查看 77关注 0票数 2

关于随机模块的questions方法,栈溢出上有相当多的random.shuffle

让我对shuffle感到不快的是它在原地移动,而不是返回一个被洗牌的副本。

请注意,洗牌工作到位,并返回无。

因此,类似的表达式

代码语言:javascript
复制
for index, (parent1, parent2) in enumerate(zip(sorted(population)[::2], shuffle(population)[1::2])):

别工作了。写它带有副作用似乎不必要地冗长:

代码语言:javascript
复制
other_half = population[1::2]
random.shuffle(other_half)
for index, (parent1, parent2) in enumerate(zip(sorted(population)[::2], other_half):

从功能上来说,什么是节奏曲?

EN

回答 2

Stack Overflow用户

发布于 2017-11-06 11:57:53

一个很好的选择是random.samplek是列表中的len

代码语言:javascript
复制
import random

li = [1, 2, 3, 4, 5]

for _ in range(4):  # showing we get a new, 'shuffled' list
    print(random.sample(li, len(li)))

# [5, 2, 3, 1, 4]
# [1, 5, 4, 3, 2]
# [4, 2, 5, 1, 3]
# [4, 2, 3, 5, 1]
票数 2
EN

Stack Overflow用户

发布于 2017-11-06 12:01:50

这看起来像this question的副本

公认的答案是

代码语言:javascript
复制
shuffled = sorted(x, key=lambda k: random.random())
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47136434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档