元组是不可变的,因此编译器通过将其作为常量加载来优化此操作——这称为常量折叠(您可以从LOAD_CONST上面的指令中清楚地看到这一点),因此所花费的时间可以忽略不计。这在集合中看不到,因为它们是可变的(感谢@user2357112 指出这一点)。 对于更大的序列,我们看到了类似的行为。{..}与set()必须从生成器构建集合...
字典与集合在CPython创建时,会像系统申请定量内存块默认最小长度是8,每次改变大小增加到原来的4倍。每次插入数据时会生成索引(二进制数),会在申请的内存存储块中随机插入,如果目标存储块已有数据,那就换个位置,这叫做散列碰撞。 由于字典与集合在插入数据不是每一次都会扩增集合体积,所以会比列表效率高效、省内存空间。