3

NumPy 配列からセットを作成する理由がわかりません。Python は要素の順序を入れ替えます。

import numpy as np
A = np.array([2])
B = np.array([2, 8])
setA = set(A)
setB = set(B)

In [6]: A
Out[6]: [2]

In [7]: B
Out[7]: [2, 8]

In [8]: setA
Out[8]: set([2])

In [9]: setB
Out[9]: set([8, 2])

In [10]: list(setA.union(setB))
Out[10]: [8, 2]

In [11]: np.union1d(A,B).tolist()
Out[11]: [2, 8]

を作成したときに順序が維持されないのはなぜset(B)ですか?

4

2 に答える 2

3

set定義上、s には順序がありません。代わりに、封じ込めのテストなどの特定の操作を最適化するために作成されます。したがって、要素を作成/セットに追加するときは、順序の保存に頼るべきではありません。

于 2012-12-07T22:49:43.300 に答える
2

セットは一意の要素の順序付けられていないコレクションであるため、set([2,8]) と set([8, 2]) はまったく同じです。なんで気にするの?必要なセットじゃないかも…

于 2012-12-07T22:51:01.550 に答える