我有两个列表,它们具有相同的元素。
a=[1,2,3,4,5,6,7,8,9]
b=[1,2,3,4,5,6,7,8,9]
如果我写这个:
a[::]==b[::]
>>>True
这意味着所有元素索引都是相同的。但我希望将 b 随机播放,直到 b 的索引与 a 的索引不同。
我试过了:
import random
while a[::]==b[::]:
random.shuffle(b)
我认为它将随机播放 b 直到所有索引都不同,但它不是我所期望的。所有时间至少有一个元素具有相同的索引。我该怎么办?
答案 0 :(得分:1)
a[::] == b[::]
- 或只是a == b
- 检查所有元素是否相等,这就是你的while
结束的原因(可能是第一步)。
你想要一些不同的东西,即它们的 none 是相等的,Iow not any
是相等的。
我们可以使用any
和zip
来实现此条件:
>>> a=[1,2,3,4,5,6,7,8,9]
>>> b=[1,2,3,4,5,6,7,8,9]
>>> import random
>>> while any(x==y for x,y in zip(a,b)):
... random.shuffle(b)
...
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b
[6, 5, 1, 2, 7, 8, 9, 4, 3]
答案 1 :(得分:0)
a[::] == b[::]
检查所有索引是否相等。只要any索引相等,您就想保持随机播放。这就是说:
while any(a[i] == b[i] for i in xrange(len(a)):
random.shuffle(b)