53

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

4

7 回答 7

85

有很大的不同。

  1. 集合不能包含重复项
  2. 集合是无序的
  3. 为了在集合中查找元素,使用哈希查找(这就是集合无序的原因)。这使得__contains__( inoperator) 对于集合比列表更有效。
  4. 集合只能包含可散列项(参见#3)。如果你尝试:set(([1],[2]))你会得到一个TypeError.

在实际应用中,列表非常适合排序和排序,而当您不想重复并且不关心顺序时,集合很适合使用。

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

new_set = myset.intersection(mylist)

得到 aset和 a之间的交集list

于 2012-09-10T15:11:41.130 回答
12

sets— 独特元素的无序集合

lists- 有序的元素集合

sets允许您进行诸如intersectionuniondifferencesymmetric difference之类的运算,即数学集合论的运算。Sets 不允许索引并且在哈希表上实现。

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

于 2012-09-10T15:12:30.420 回答
7

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

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

列表

列表是有序且可变的集合。在 Python 中,列表是用方括号编写的。

# example list
newlist =["one", "two", "three"]
  • 您通过引用索引号访问列表项
  • 列表是可变的。
于 2018-12-04T08:59:02.430 回答
5

Set 表示不同元素的集合。在 python 中,集合主要用于两个原因(书籍:Data Science from Scratch,Joel Gruce):

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

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

于 2017-09-12T07:35:25.657 回答
5

还有一些区别是:

  1. 列表可以是二维的,而集合不能。
  2. 由于列表是有序的(即有序列号),列表执行起来相对较慢,而集合执行得很快。
  3. python中的列表就像java或c的数组。
  4. 打印一组几乎总是提供不同的输出顺序。
  5. Set 用于hash function查找元素,而 list 是一个数组。因此查找元素 inSet比 in 更快list
于 2016-08-31T03:56:02.463 回答
3

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

List是一个有序且可变的集合。允许重复成员。

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

Set是一个无序和无索引的集合。没有重复的成员。

字典是一个无序、可变和索引的集合。没有重复的成员。

您可以通过引用其索引来访问列表项。但是,在sets中,您需要遍历 set 项目才能访问它。

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

于 2019-12-16T12:39:51.630 回答
1

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

列表 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上了解有关带有示例的集合的更多信息

于 2019-10-25T16:00:22.100 回答