关于python中 集合(set) 的语法疑问在python中输入:[x ** 2 for x in [1,2,3,4]]结果是:[1,4,9,16]而输入:{x ** 2 for x in [1,2,3,4]}结果是:{16,1,4,9}怎么会这样?虽然集合好像是不分顺序的,但是这样乱排序

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/14 02:40:54
关于python中 集合(set) 的语法疑问在python中输入:[x ** 2 for x in [1,2,3,4]]结果是:[1,4,9,16]而输入:{x ** 2 for x in [1,2,3,4]}结果是:{16,1,4,9}怎么会这样?虽然集合好像是不分顺序的,但是这样乱排序
xR]OA+!lڤMD}1$?`.تU((l TkSΝY T5iҷL23wGO'`՗K)\,웡a"K[~B\om(7<Aiq̐9biW)}LdRiYtF4F5,􍽱x̤xh#{&EQ^ Tp3;pʽ,V.E lq`lHpt%(<`\Sw9aգF ai>.'0\&hrsQޙNK4̠AK$?aCB ZGt2YP1x߆gܳ,*g _ ѕT׊f՞(/5rh4K`OĔ(t'wwK0?cn ͍sE7p5[*S3x7ҭAcؘъ D$!$`+

关于python中 集合(set) 的语法疑问在python中输入:[x ** 2 for x in [1,2,3,4]]结果是:[1,4,9,16]而输入:{x ** 2 for x in [1,2,3,4]}结果是:{16,1,4,9}怎么会这样?虽然集合好像是不分顺序的,但是这样乱排序
关于python中 集合(set) 的语法疑问
在python中输入:
[x ** 2 for x in [1,2,3,4]]
结果是:
[1,4,9,16]
而输入:
{x ** 2 for x in [1,2,3,4]}
结果是:
{16,1,4,9}
怎么会这样?虽然集合好像是不分顺序的,但是这样乱排序也太奇怪了

关于python中 集合(set) 的语法疑问在python中输入:[x ** 2 for x in [1,2,3,4]]结果是:[1,4,9,16]而输入:{x ** 2 for x in [1,2,3,4]}结果是:{16,1,4,9}怎么会这样?虽然集合好像是不分顺序的,但是这样乱排序
集合用的实现是散列
python的散列表初始一般有8个槽
1对应1号槽 (1%8=1)
4对应4号槽 (4%8=4)
9对应?(9%8=1 重复,所以再散列到某位置)
而16则对应0号槽 (16%8=0)

集合根本没有顺序一说,所以也没有乱排序这种事,就别在“显示出来是什么顺序”这个问题上纠缠了。

{16, 1, 4, 9} ...set...