0

整数を使って単純な「交差」操作を大量に実行しようとしています。残念ながら、セットアップで numpy/scipy を利用できず、それを変更することはできません。

スタックオーバーフローで、Python の set操作がデータを適切に並べ替えていることに気付きました。これは、ケースのロードを高速化するだけでなく、私の場合、実際にデータも並べ替えたいので、素晴らしいボーナスになるでしょう。

いつもうまくいくとは限らないのではないかと心配しているので、テストに行きました:

import random 

one = range(100)
two = range(50)
three = range(50)

for i in xrange(1000000):
    # shuffle the lists
    random.shuffle(one)
    random.shuffle(two)    

    # do set operation  
    res = [v for v in set(one) & set(two)]
    if res != three:
        print res

その結果、すべてのサンプルがソートされます (間違ったケースは印刷されません)。

これは非常に説得力がありますが、集合交差を使用するときに整数が完全にソートされない場合があるかどうかを知りたいですか?

4

3 に答える 3

2

セットには順序がないため、順序は偶然です。または、正確に言うと、ある程度の順序はありますが、それに関して推測することはできません。結果をソートしたい場合は、 を使用して自分でソートする必要がありますsorted()

于 2015-01-19T23:33:28.430 に答える
1

反例は、どこを見ればよいかを知っていれば、非常に簡単に見つけることができます

>>> [v for v in set(range(-10,0)) & set(range(-5,10))]
[-2, -5, -4, -3, -1]
于 2015-01-19T23:43:33.870 に答える