为啥输出是乱序的呢
list1={1,2,3,4,5,6}
list3={i**3 for i in list1}
print(list3)
#结果
{64, 1, 8, 216, 27, 125}
注释:集合是无序的,因此您无法确定项目的显示顺序。
集合是无序的
主要原因是和集合添加元素时的底层计算逻辑有关,python会根据元素的harsh值与现有元素作对比(去重),然后选择效率最高的方式把元素放置在集合里。因为是无序的,所以展现出来的顺序并不代表元素在集合里的位置。
从结论出发,答案就是集合是无序的
那么集合为什么是无序的呢,因为为了实现集合之间的与或非快速操作,搜索复杂度必须是O(1),那么就要在后台使用散列算法等方法进行存储,而不能线性存储,也就导致无法同时满足排序要求
另,字典在3.7以前也是无序的,3.7以后输出时可以保证按输入的顺序输出