标签: python python-3.x set
我刚开始学习python set comprehensions。为什么{ 2**x for x in {0,1,2,3,4} }会返回{8, 1, 2, 4, 16}而不是订购的{1, 2, 4, 8, 16}?
{ 2**x for x in {0,1,2,3,4} }
{8, 1, 2, 4, 16}
{1, 2, 4, 8, 16}
答案 0 :(得分:2)
从数学上讲,集合没有订单。在显示或迭代集合时,Python显然需要提供特定的顺序,但此顺序是任意的,不能依赖。但是,该订单是针对特定集合而固定的;迭代相同的,未修改的集合每次都会产生相同的顺序。