在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 為什么當(dāng)數(shù)字小點(diǎn),set函數(shù)會(huì)排序?set不是無(wú)序的嗎?

為什么當(dāng)數(shù)字小點(diǎn),set函數(shù)會(huì)排序?set不是無(wú)序的嗎?

為什么當(dāng)數(shù)字小點(diǎn),set函數(shù)會(huì)排序?set不是無(wú)序的嗎?

>>set([4,1,1,3,5])
    {1, 3, 4, 5}

>>set([2,4,6,9,0,4,6])
    {0, 2, 4, 6, 9}

>> set([9,4,7,2,23,7,99])
    {2, 99, 4, 7, 9, 23}
回答
編輯回答
凝雅

Python的字典和集合都是基于散列表技術(shù)實(shí)現(xiàn)的。
我試驗(yàn)了一下。根據(jù)結(jié)果,我猜測(cè):
創(chuàng)建集合,當(dāng)元素個(gè)數(shù)不多于32時(shí),散列函數(shù)為key mod 32(得數(shù)作為散列地址),然后采用開地址法消解沖突。。。。因此,只要數(shù)字小于32都會(huì)是有序的。。
——分割線——
初始的散列表長(zhǎng)度為32,當(dāng)負(fù)載因子超過(guò)2/3即元素個(gè)數(shù)超過(guò)20個(gè)時(shí)自動(dòng)更換更大的散列表,這里我試了下,長(zhǎng)度會(huì)擴(kuò)充到128,而散列函數(shù)好像都是key mod n,這里的n為散列表長(zhǎng)度。

2018年3月11日 20:05