Python中的集合和列表有什么区别?

时间:2012-09-10 15:09:41

标签: python list set

Python中的集合和列表之间的唯一区别是,您可以使用并集,交叉,差异,对称差异函数来比较两个集合吗?为什么这些功能不能简单地应用于列表?什么情况下集合比列表更有用?

7 个答案:

答案 0 :(得分:70)

有很大的不同。

  1. 集合不能包含重复项
  2. 集合无序
  3. 为了在集合中查找元素,使用散列查找(这就是集合无序的原因)。这使得__contains__in运算符)对于集合而言比列表更有效。
  4. 集合只能包含可清除项目(请参阅#3)。如果您尝试:set(([1],[2])),您将获得TypeError
  5. 在实际应用中,列表非常适合排序和订购,而当您不需要重复且不关心订单时,套件很好用。

    另请注意,如果您不关心订单等,可以使用

    new_set = myset.intersection(mylist)
    

    获取setlist之间的交集。

答案 1 :(得分:6)

sets - 无序的独特元素集合

lists - 有序的元素集合

sets允许您执行intersectionuniondifferencesymmetric difference等操作,即数学集合论的操作。集不允许索引,并在哈希表上实现。

lists实际上是可变长度数组,而不是Lisp样式的链表。在列表中,元素由索引访问。

答案 2 :(得分:3)

Set表示不同元素的集合。在python中,集合主要用于两个原因(书:Scratch的数据科学,Joel Gruce):

  1. 为了加快操作速度: 是对集合的快速操作。如果我们有大量元素,并且如果我们希望执行成员资格测试,那么在这种情况下使用set而不是列表是合适的。

  2. 查找集合中的不同项目。程序员使用集合的频率远低于词典和列表。

答案 3 :(得分:3)

设置

集合是无序且无索引的集合,并且不允许重复。在Python中,集合用大括号括起来。

# example set
newset = {"one", "two", "three"}
  • 您不能通过引用索引来访问集中的项目
  • 集合是可变的
  • 它们对于检查重复项很有用

列表

列表是有序且可更改的集合。在Python中,列表用方括号括起来。

# example list
newlist =["one", "two", "three"]
  • 您通过引用索引号访问列表项
  • 列表是可变的。

答案 4 :(得分:2)

还有一些不同之处:

  1. 列表可以是2-D,而集合则不能。
  2. 由于列表是有序的(IE。有序列号)列表执行起来比较慢,而设置很快。
  3. python中的列表类似于java或c的数组。
  4. 打印套装几乎总是提供不同的输出顺序。
  5. 设置使用hash function查找元素,而list是数组。因此,Set中的查找元素比list中更快。

答案 5 :(得分:1)

集合与列表之间的差异 在这里,我们将讨论Python中的Set和List之间的区别。

列表 1)列出保存元素的插入顺序。 2)列出支持索引。 3)我们可以更改列表中存储的元素的值。 4)列表可以存储重复值。 5)列表用方括号声明。 6)例如:A = [1、2、3、4、5、1、2、3]

设置 1)集不按插入顺序保存元素。 2)集不支持索引。 3)我们不能更改存储在集合中的元素的值。 4)集不能存储重复值。 5)集用大括号声明。 6)例如:A = {1,2,3,4,5}

在下面给出的链接上通过示例了解有关集合的更多信息 https://tutorialsimpact.com/python/sets-in-python

答案 6 :(得分:1)

实际上python中有四种收集数据类型:

  

列表是一个有序且可更改的集合。允许重复的成员。

     

元组是一个有序且不可更改的集合。允许重复的成员。

     

设置是一个无序且没有索引的集合。没有重复的成员。

     

词典是一个无序,可变且已编入索引的集合。没有重复的成员。

您可以通过引用列表项目的索引来访问该项目。但是,在设置中,您需要循环浏览设置项才能访问它。

来源:https://www.w3schools.com/python/python_sets.asp