【问题标题】:What could explain this odd behaviour of sets? [duplicate]什么可以解释集合的这种奇怪行为? [复制]
【发布时间】:2016-10-23 15:29:01
【问题描述】:
s = {1,1,2,2,3,2,1,2,4,3,5,8}
s.add(7)
print(s)


#the output is   
{1, 2, 3, 4, 5, 7, 8}.



However , for 
s = {1,1,2,2,3,2,1,2,4,3,5,100}
s.add(7)
print(s)

#the output is  
{1, 2, 3, 4, 100, 5, 7}.

我的问题:为什么在第一种情况下,'7'被添加到集合中,以便集合按升序排序,而在第二种情况下,它被添加到集合的末尾?

【问题讨论】:

  • “集合的结尾” > 因为集合是无序的,所以不存在集合结尾的概念。

标签: python python-3.5


【解决方案1】:

集合是无序的。继续构造第一组的副本,看看它是否保持数字顺序。尝试使集合更加填充,在同一个会话中生成一堆。尝试制作一个非常大的... Hack @it :)

【讨论】:

  • 那么,这是否意味着添加到集合中的元素被随机放置在集合中?
  • @SushR 不,我不认为随机是最准确的描述,因为有些特定的细节会在一定程度上决定 Set 值的排列。我认为胜利在于 Sets 是高效的,因为它们的非冗余性和哈希一样,无序方面与使用速度和内存问题有关。请参阅视频和答案here。希望有帮助!
  • @SushR 特别是,根据video@27m57s,“集合是没有存储值的字典”
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多