Python Set vs List vs Tuple的区别
在Python中使用数据结构可以用来描述数字、字符串和其他Python对象的一系列值,这种方法令人困惑和复杂。Python内置的数据结构,如列表、元组和集合,都非常吸引人,它们具有与众不同的特点,彼此之间有所区别。这些数据结构具有非凡的能力来保存对象组,使它们独一无二。在本文中,我们将看到这三者中哪个最适合,并提供示例。
列表
可以在创建后对其进行更改、添加或删除。它还可以按任意顺序进行修改和排序,因为它是有序的,可以根据它们的位置访问单个项。
示例
my_list = [1, 2, 3, 4, 5]
print(my_list)
输出
[1, 2, 3, 4, 5]
当你创建一个列表时,你得到的是一个可以更改和安排的项目集合。项目可以用方括号括起来,并使用 list() 函数创建。通过索引或切片来访问元素;使用 append() 和 extend() 方法添加元素;使用 remove() 和 pop() 方法删除元素;使用in关键字来检查元素是否存在;使用 len() 函数确定列表的长度;使用sort()方法对列表中的元素进行排序和反转。
示例
# Create a list
fruits = ['apple', 'banana', 'orange']
# Access elements
print(fruits[0])
# Add elements
fruits.append('kiwi')
print(fruits)
# Remove elements
fruits.remove('banana')
print(fruits)
# Check if element is in list
print('apple' in fruits)
# Find length of list
print(len(fruits))
# Sort the list
fruits.sort()
print(fruits)
# Reverse the list
fruits.reverse()
print(fruits)
输出
apple
['apple', 'banana', 'orange', 'kiwi']
['apple', 'orange', 'kiwi']
True
3
['apple', 'kiwi', 'orange']
['orange', 'kiwi', 'apple']
元组
一组不能被改变的事物的集合,有序且在创建后不能添加任何元素;也不能对其进行任何修改。同时,元组可通过位置索引来定位特定的项。
示例
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple)
输出
(1, 2, 3, 4, 5)
有两种方法可以创建它们:使用 tuple ()函数或用方括号括起来的组件。可以使用排序或切片来获取元组的部分。由于它们是永久的,创建后不能更改任何组件。您可以使用单词” in ”来确定元组是否包含某个成分。利用 len ()函数确定元组的范围。例如,日期和位置通常以三元组的形式存储,因为它们在创建后不能更改。
集合
无序的不可重复元素的集合;此外,由于集合没有索引,所以无法根据位置找到单个项。
示例
my_set = {1, 2, 3, 4, 5}
print(my_set)
输出
{1, 2, 3, 4, 5}
用花括号括起来的逗号分隔的值列表可以用来创建Python中的集合,集合是一个无序的包含不同组件的集合。可以使用 add() 方法或 update() 方法向集合中添加项目。当删除组件时, discard() 方法不执行任何操作,而 delete() 方法会生成一个错误。您可以执行集合的并集、交集和差集等操作,还可以使用 set() 函数将列表转换为集合。这在从列表中删除副本或对其应用集合操作时非常有用。
示例
# Create a set
numbers = {1, 2, 3, 4}
# Add elements
numbers.add(5)
print(numbers)
# Remove elements
numbers.discard(3)
print(numbers)
# Check if element is in set
print(2 in numbers)
# Find length of set
print(len(numbers))
# Perform set operations
set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1.union(set2))
print(set1.intersection(set2))
print(set1.difference(set2))
# Convert list to set
numbers_list = [1, 2, 3, 4, 5]
numbers_set = set(numbers_list)
输出
{1, 2, 3, 4, 5}
{1, 2, 4, 5}
True
4
{1, 2, 3, 4}
{2, 3}
{1}
列表 vs 元组 vs 集合 – 比较
在了解了列表、元组和集合这些基本的数据结构之后,让我们从不同的方面来比较它们。
可变 vs 不可变
元组是不可变的,所以一旦定义了元组,它的组成部分就不能被改变。列表和集合可以添加、删除或修改其中的元素,因为它们是可变的。如果需要一个不能被修改的数据格式,就使用元组;否则,使用集合或列表。
顺序
列表和元组维持元素的顺序,而集合不维持顺序。集合是无序的,其中的元素是随机排列的。
重复元素
列表和集合允许重复元素,而元组不允许重复元素。集合具有唯一性的特性,它只存储唯一的元素。因此,如果只想存储唯一的值,使用集合;否则,使用列表或元组。
性能
由于这些数据结构的内部实现方式不同,对于成员检查和去重,集合比列表和元组更快;而对于索引,列表和元组比集合慢。
应用
- Python中最常用的数据格式是列表。它们对于展示数字的列表非常有用,比如数据集中的列或记录中的行。
-
向量的元素和点的坐标是两个例子,可以使用元组来表示一组固定的相关值。
-
集合在需要保存各种不同特征或执行特定任务(如关联、交集和差集)时非常有用。
结论
在本教程中,我们谈论了列表、元组和集合在Python中的区别。列表和集合是可变的,意味着你可以向其中添加、删除和修改元素,而元组是不可变的,意味着一旦定义了元组,就不能对其中的元素进行添加、删除或修改。集合不保持元素的顺序,但列表和元组保持。列表和元组可以包含重复的元素,而集合只允许唯一的元素。最后但并非最不重要的是,使用集合进行索引和成员检查比使用列表和元组要慢。根据你的需求,选择适当的数据结构可以使你的代码更有效和灵活。