python中shuffle是什么意思_选择vs.Shuffle,Python

使用random.choice肯定会更快。在

通过查看at the code,可以很容易地解决这个问题。(cpython中的random模块大部分是用Python实现的,只有低级随机数的生成是用C语言实现的。)下面是相关的部分,它们正好挨在一起:def choice(self, seq):

"""Choose a random element from a non-empty sequence."""

try:

i = self._randbelow(len(seq))

except ValueError:

raise IndexError('Cannot choose from an empty sequence') from None

return seq[i]

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.

"""

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]

choice方法只生成一个随机数,并使用它索引到给定的序列中。另一方面,shuffle方法在序列的长度上循环,并在序列中交换元素。因此choice将花费O(1)时间,而{}需要O(N)时间。在

在大多数情况下,如果只需要一个值,则需要使用random.choice。如果需要多个非重复选择,请使用random.sample。只有当您要使用all时,才应该使用random.shuffle。请注意,即使您确实希望选择多个项目,如果您希望同一个项目可以多次被选中,则仍应使用random.choice。采样和洗牌不会重复项目(除非项目在输入列表中重复)。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值