擅长:python、mysql、java
<p>在<em>shuffle()</em>和<em>sample()</em>之间有两个主要区别:</p>
<p>1)Shuffle将就地更改数据,因此其输入必须是可变序列。相反,sample生成一个新的列表,其输入可以有更多的变化(tuple、string、xrange、bytearray、set等)。</p>
<p>2)样本可以让你做更少的工作(即部分洗牌)。</p>
<p>有趣的是,通过演示可以根据<em>sample()</em>实现<em>shuffle()</em>来显示两者之间的概念关系:</p>
<pre><code>def shuffle(p):
p[:] = sample(p, len(p))
</code></pre>
<p>反之亦然,根据shuffle实现<em>sample()</em>:</p>
<pre><code>def sample(p, k):
p = list(p)
shuffle(p)
return p[:k]
</code></pre>
<p>在shuffle()和sample()的实际实现中,这两种方法都没有那么有效,但它确实显示了它们的概念关系。</p>