繁体   English   中英

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

[英]What is the difference between sets and lists in Python?

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

有很大的不同。

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

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

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

new_set = myset.intersection(mylist)

获取setlist之间的交集。

sets — 唯一元素的无序集合

lists - 元素的有序集合

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

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

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

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

列表

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

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

还有一些区别是:

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

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

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

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

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

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

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

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

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

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

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

Sets 和 Lists 的区别这里我们将讨论 Python 中 Sets 和 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}

在下面给出的链接上了解有关 Sets with Example 的更多信息https://tutorialsimpact.com/python/sets-in-python

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM