专业编程基础技术教程

网站首页 > 基础教程 正文

Python 中列表、元组、集合和字典之间的区别

ccvgpt 2024-12-11 11:03:05 基础教程 1 ℃

Python 中列表、元组、集合和字典之间的主要区别

易变性:

  • 列表:可变(可修改)。
  • 元组:不可变(不可修改)。
  • 设置:可变,但元素必须不可变。
  • 字典:可变;键是不可变的,但值可以更改。

次序:

  • 列表:保持元素的顺序。
  • 元组:保持元素的顺序。
  • 设置:无保证订单。
  • 字典:从 Python 3.7+ 开始,插入顺序保持不变。

唯一性:

  • 列表:允许重复项。
  • 元组:允许重复。
  • 设置:仅包含唯一元素。
  • 字典:唯一键,值可以复制。

数据结构:

  • 列表:有序集合。
  • 元组:有序集合。
  • 套装:无序收藏。
  • 字典:键值对的集合


列表:多才多艺的系列

定义:列表是可以具有不同类型的项的有序集合。它们是可变的,这意味着在创建列表后可以更改它们的元素。

Python 中列表、元组、集合和字典之间的区别

语法: 用方括号 [] 创建。

特征:

  • 基于索引:您可以按元素在列表中的位置访问元素。
  • 允许重复元素。
  • 可以添加、删除或更改元素。

用例:当您需要可能需要修改的有序项目集合时,或者当您想要存储一系列项目时。

语法和示例:

list1 = [3 , 4, 'ABC', 3, 'list']
list2 = []
list3 = list((4, 2, 8))
print(list1)
print(list2)
print(list3)
#OUTPUT:
[3, 4, 'ABC', 3, 'list']
[]
[4, 2, 8]

索引

list1 = [1, 2, "mrcoder", 3]
print(list1[2])
#OUTPUT
mrcoder

添加新元素

list1 = ["1", "2", "3"]
list1.append("4")
print(list1)
#OUTPUT
['1', '2', '3', '4']

Deleting 元素

list1 = ["1", "2", "3", "4"]
list1.pop()
print(list1)
#OUTPUT
['1', '2', '3']

排序元素

list1 = [6, 34, 24, 1, 234]
list1.sort()
print(list1)
#output
[1, 6, 24, 34, 234]

搜索元素

list1 = [34, 323, 74, 132, 11]
# index() returns index for 4 in list1
print(list1.index(11))
#OUTPUT
4

换向元件

list1 = [34, 323, 74, 132, 11]
list1.reverse()
print(list1)
#OUTPUT
[11, 132, 74, 323, 34]

计数元素

list1 = [1, 6, 3, 6, 8, 1, 5]
print(list1.count(6))
#OUTPUT
2

元组:不可变集合

定义:元组类似于列表,但不可变,这意味着一旦创建了元组,就无法更改其元素。

语法: 用括号 () 创建。

特征:

  • 基于索引。
  • 允许重复元素。
  • 创建后无法修改(不可变)。

用例:当需要一个有序的项目集合时,这些项目不应在程序过程中更改。非常适合存储固定数据。

语法和示例:

tuple1 = (1, 2, 'abc', 3, 'def')
tuple2 = ()
tuple3 = tuple((1, 2, 3))
print(tuple1)
print(tuple2)
print(tuple3)
#OUTPUT
(1, 2, 'abc', 3, 'def')
()
(1, 2, 3)

索引

tuple1 = (6, 2, "mrcoder", 7)
print(tuple1[2])
#OUTPUT
mrcoder

集合:独特元素收集器

定义:集合是唯一元素的无序集合。它们是可变的,不允许重复元素。

语法:使用大括号 {} 或空集 set() 的函数创建。

特征:

  • 无序,因此无法通过索引访问元素。
  • 自动删除重复元素。
  • 可以添加或删除元素。

用例:当您需要确保所有元素都是唯一的,或者当您需要执行并集、相交、差等集合操作时。

语法和示例:

thisset = {"apple", "banana", "cherry"}
print(thisset)
# Note: the set list is unordered, meaning: the items will appear in a random order.
#OUTPUT
{'banana', 'apple', 'cherry'}

词典:键值配对

定义:字典是键值对的无序集合。键必须是唯一且不可变的,但值可以是任何类型且可变的。

语法: 使用大括号 {} 创建,键值对以冒号分隔 :

特征:

  • 键值对允许通过键直接访问值。
  • 键必须是唯一且不可变的(例如,字符串、数字或元组)。
  • 值可以是任何类型,并且可以更改。
  • 可以添加、删除或更改元素。

用例:当您需要将键与值相关联时,例如通过某些标识符查找值。非常适合映射或存储数据,以便通过其名称或标识符轻松检索数据。

  • 在 Python 版本中< 3.7:是无序的数据集合。
  • 在 Python v3.1 中:引入了一种名为“OrderedDict”的新型字典,类似于 python 中的字典;区别在于 orderedDict 是有序的(顾名思义)
  • 在最新版本的 Python 中,即 3.7: 最后,在 python 3.7 中,字典现在是键值对的有序集合。现在,在插入顺序(即插入顺序)中保证了顺序。

语法和示例:

dict1 = {"key1": "value1", "key2": "value2"}
dict2 = {}
dict3 = dict({1: "one", 2: "two"})
print(dict1)
print(dict2)
print(dict3)#OUTPUT
{'key1': 'value1', 'key2': 'value2'}
{}
{1: 'one', 2: 'two'}

索引

dict1 = {"one": 1, "two": 2, "three": 3}
print(dict1.keys())
print(dict1.values())
print(dict1['two'])
#OUTPUT
dict_keys(['one', 'two', 'three'])
dict_values([1, 2, 3])
2

添加新元素

dict1 = {"India": "IN", "United States": "USA", "Algeria": "DZ"}
dict1.update({"Aruba": "AW"})
print(dict1)
dict1.pop("Algeria")
print(dict1)
#OUTPUT
{'India': 'IN', 'United States': 'USA', 'Algeria': 'DZ', 'Aruba': 'AW'}
{'India': 'IN', 'United States': 'USA', 'Aruba': 'AW'}

Deleting 元素

dict1 = {"India": "IN", "United States": "USA", "Algeria": "DZ"}
dict1.pop('Algeria')
print(dict1)
#OUTPUT
{'India': 'IN', 'United States': 'USA'}

排序元素

dict1 = {"India": "IN", "United States": "USA", "Algeria": "DZ"}
print(sorted(dict1))
#OUTPUT
['Algeria', 'India', 'United States']

搜索元素

dict1 = {"India": "IN", "United States": "USA", "Algeria": "DZ"}
print(dict1['Algeria'])
#OUTPUT
DZ

注意:无序列集缺少维护数据添加顺序的数据结构。另一方面,有序集合具有这样的数据结构。

  • 字典(在 Python v3.6 及更早版本中)可能看起来是有序的,但事实并非如此;另一方面,集合是无序集合。虽然它确实保存了已添加到其中的密钥,但仍可以通过密钥进行访问,但不能以精确的整数索引进行访问。
  • 在字典中,每个键都是不同的,并用作获取值的索引。但是,字典的密钥存储不会按输入顺序保存,因此无法排序。另一方面,Python 3.1 的“OrderedDict”和 Python 3.7 的 Dictionary 是键值数据的有序集合,因为它们保留了插入顺序。

字典、列表、集合和元组之间的主要区别

语法

  • 字典:键值对用大括号 {} 括起来,用逗号分隔。
  • 列表:使用方括号 [] 表示以逗号分隔的条目。
  • 设置:使用大括号 { } 的逗号分隔元素。
  • 元组:使用括号()用逗号分隔组件。

次序

  • 字典:在 Python 3.7+ 中,它保持顺序;在 Python 3.6 中,它是无序的。
  • 列表:维护秩序。
  • 设置:未安排。
  • 元组:维持秩序。

重复数据

  • 字典:键是唯一的,值可以复制。
  • 列表:允许重复元素。
  • 设置:不允许重复元素。
  • 元组:允许重复元素。

索引

  • 字典:基于键的索引。
  • 列表:从 0 开始的基于整数的索引。
  • 设置:无基于索引的机制。
  • 元组:从 0 开始的基于整数的索引。

添加元素

  • 字典:使用键值对。
  • 列表:可以使用 append() 方法添加新项目。
  • Set:使用 add() 方法。
  • 元组:不可变,无法添加新数据。

删除元素

  • 字典:使用 pop(key) 方法删除指定的键和值。
  • List:使用 pop() 方法删除元素。
  • Set:使用 pop() 方法删除元素。
  • 元组:不可变,无法弹出或删除任何数据。

排序元素

  • 字典:可以使用 sorted() 方法对键进行排序。
  • List:使用 sort() 方法对元素进行排序。
  • 集合:无序,因此排序不适用。
  • 元组:不可变,无法对数据进行排序。

搜索元素

  • 字典:使用 get(key) 方法检索指定键的值。
  • 列表:使用 index() 方法搜索并返回首次出现的索引。
  • 集合:无序,因此搜索不适用。
  • 元组:使用 index() 方法搜索并返回首次出现的索引。

换向元素

  • 字典:没有基于整数的索引,因此没有反转。
  • 列表:使用 reverse() 方法反转元素。
  • 集合:无序,因此不建议倒车。
  • 元组:不可变,反向方法不适用。

计数元素

  • 字典:未为字典定义 count()。
  • 列表:使用 count() 方法计算特定元素的出现次数。
  • 集合: count() 未为集合定义。
  • 元组:使用 count() 方法计算特定元素的出现次数。

最近发表
标签列表