為什么這個集合中的元素列印出來后會自動排序而且pop洗掉的一直是我add的0??
uj5u.com熱心網友回復:
你用的set,默認會排序,set的pop洗掉的是第一個,所以刪0。如果不想排序就用list, list默認pop最后一個,你可以指定位置pop,比如pop第一個number_list.pop(0)
uj5u.com熱心網友回復:
不是說集合是無序的嗎?而且當其中一個或多個元素數值較大后就不會排序例如“99”,這又是為什么?
uj5u.com熱心網友回復:
而且集合中的pop確實是隨機洗掉啊
uj5u.com熱心網友回復:
是的,我說的不對,set是無序的,比如以這種方式操作,每次列印出來順序是不一樣的,所以pop的是哪個數字就是隨機的,但一定是前面列印出來的第一個
number_set = {'2','1','5','7','3'}
print(number_set)
number_set.add('0')
print(number_set)
number_set.pop()
print(number_set)
全是數字時看起來每次各個值的相對順序是固定的,和set的hash實作有關系吧,比如number_set = {1,2,3,32},32就固定排在第一個,這時候add的0也固定在最后一個,pop的時候只會是32,所以純數字時很難得到期望的隨機吧
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/90919.html
上一篇:fortran gdb除錯問題
