梦觉知 发表于 2022-12-19 10:16:23

{i for i in "FishC"}集合排序

>>>{i for i in "FishC"}
{'s', 'C', 'i', 'h', 'F'}
>>>{i for i in "FishC"}
{'s', 'C', 'i', 'h', 'F'}
>>>{i for i in "FishC"}
{'s', 'C', 'i', 'h', 'F'}

集合不是无序的吗?
为什么会出现这种情况

tommyyu 发表于 2022-12-19 10:28:46

本帖最后由 tommyyu 于 2022-12-19 10:32 编辑

应该是在一次打开上运行到的结果一样,你再打开IDLE,再输入这个,就会有不同的返回值

梦觉知 发表于 2022-12-19 11:21:34

tommyyu 发表于 2022-12-19 10:28
应该是在一次打开上运行到的结果一样,你再打开IDLE,再输入这个,就会有不同的返回值

这种情况我也知道,
但我想知道的是他为什么会出现相同的情况,这个原理是什么

suchocolate 发表于 2022-12-19 11:42:31

梦觉知 发表于 2022-12-19 11:21
这种情况我也知道,
但我想知道的是他为什么会出现相同的情况,这个原理是什么

所以你期望的结果是什么?

梦觉知 发表于 2022-12-19 11:49:29

suchocolate 发表于 2022-12-19 11:42
所以你期望的结果是什么?

出现相同结果的原理

suchocolate 发表于 2022-12-19 14:59:53

梦觉知 发表于 2022-12-19 11:49
出现相同结果的原理

>>> id({i for i in 'FishC'})
1929336217896
>>> id({i for i in 'FishC'})
1929336217896
>>> id({i for i in 'FishC'})
1929336217896
>>>

梦觉知 发表于 2022-12-19 16:16:16

suchocolate 发表于 2022-12-19 14:59
>>> id({i for i in 'FishC'})
1929336217896
>>> id({i for i in 'FishC'})


感觉不是
>>>a = set("asg")
>>>b = a.copy()
>>>id(a)
2445538283072
>>>id(b)
2445538282176
>>>a
{'g', 's', 'a'}
>>>b
{'g', 's', 'a'}
>>>a
{'g', 's', 'a'}
>>>b
{'g', 's', 'a'}

suchocolate 发表于 2022-12-19 16:17:43

梦觉知 发表于 2022-12-19 16:16
感觉不是
>>>a = set("asg")
>>>b = a.copy()


你说的都对

patrickcui 发表于 2022-12-24 00:09:41

因为在内存中的地址是没有变的,所以输出的内容当然就没有变化了。当你释放掉了内存地址再重新获取就是另外的样子了
页: [1]
查看完整版本: {i for i in "FishC"}集合排序