擅长:python、mysql、java
<p>您发布给自己问题的答案不起作用,因为它将元素与<code>list</code>中该元素的索引进行比较。因此,当您测试<code>[0, 1, 2, 3, 4]</code>是否已被洗牌时,它的工作原理是生成<code>exampleList</code>,其中<code>range</code>从<code>0</code>开始。在</p>
<p>但是,如果您从任何其他<code>list</code>开始,那么您的解决方案将无法工作,原因如上所述。在</p>
<p>要使其工作,您需要复制原始的<code>list</code>,这样您就可以将其作为已更改内容的参考。在</p>
<p>然后,当任何元素都处于同一位置时,您需要继续洗牌。在</p>
<p>很简单,代码如下:</p>
<pre><code>import random
lst = list(range(5))
shfld = lst[:]
while any(lst[i] == shfld[i] for i in range(len(lst))):
random.shuffle(shfld)
</code></pre>
<p>当我运行它<code>3</code>次时,我得到了<code>shfld</code>的三个结果:</p>
^{pr2}$
<p>这些都是有效的!在</p>