<p>我的脚本的目的是创建一个累进数字的列表:</p>
<pre><code>examplelst=list(range(5))
</code></pre>
<p>然后,在导入random和shuffle之后,我想随机排列列表:</p>
^{pr2}$
<p>然后我需要检查某个值是否仍处于起始位置,例如:</p>
<pre><code>before shuffling: [0,1,2,3,4]
after shuffling: [3,0,2*,4,1]
</code></pre>
<p>在这种情况下,值“2”仍然具有索引2。
如果发生这种情况,我想再次洗牌,直到每个索引都随机更改。
我目前的做法是:</p>
<pre><code>done=False
shuffle(examplelst)
while not done:
for i in examplelst:
if examplelst[i]==int(i):
shuffle(examplelst)
print ('shuffled')
else:
done=True
if done == True:
continue with my stuff knowing that the list is properly shuffled
</code></pre>
<p>但我以为我错了。
有人能帮忙吗?在</p>
<p>您的问题是将索引与列表项混合在一起,并在修改列表时对其进行迭代。在</p>
<pre><code>done = False
while !done:
if next((item for i, item in enumerate(examplelst) if i == item), None) is None:
done = True
else:
shuffle(examplelst)
</code></pre>