匹配列表索引

时间:2014-12-14 04:50:52

标签: python list indexing

我有两个列表,它们具有相同的元素。

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 直到所有索引都不同,但它不是我所期望的。所有时间至少有一个元素具有相同的索引。我该怎么办?

2 个答案:

答案 0 :(得分:1)

a[::] == b[::] - 或只是a == b - 检查所有元素是否相等,这就是你的while结束的原因(可能是第一步)。

你想要一些不同的东西,即它们的 none 是相等的,Iow not any是相等的。

我们可以使用anyzip来实现此条件:

>>> 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)