我无法弄清楚为什么我从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)
时
答案 0 :(得分:3)
set
没有顺序 - 而是创建它们以优化某些操作,例如那些测试包含的操作。因此,在创建/添加元素集时,不应该依赖于订单保留。
答案 1 :(得分:3)
集合为unordered collections of unique elements,因此set([2,8])和set([8,2])完全相同。你为什么在乎?也许一套不是你需要的......