Python:在一组数字中排序
问题描述
使用此代码:
print set(a**b for a in range(2, 5) for b in range(2, 5))
我得到这个答案:
set([64, 256, 4, 8, 9, 16, 81, 27])
为什么没有排序?
解决方案
在 python 或任何其他语言中,集合不是有序集合.
Sets are not ordered collections in python or any other language for that matter.
集合通常使用散列键(散列码)来实现.所以顺序可能与哈希函数的使用方式有关,而不是其元素的自然顺序.
Sets are usually implemented using hash keys (hash codes). So order is probably related to how hash functions are used instead of natural order of its elements.
如果您需要订购,请考虑使用列表.
If you need order, please do consider using a list.
相关文章