网站首页 > 基础教程 正文
Python 中列表、元组、集合和字典之间的主要区别
易变性:
- 列表:可变(可修改)。
- 元组:不可变(不可修改)。
- 设置:可变,但元素必须不可变。
- 字典:可变;键是不可变的,但值可以更改。
次序:
- 列表:保持元素的顺序。
- 元组:保持元素的顺序。
- 设置:无保证订单。
- 字典:从 Python 3.7+ 开始,插入顺序保持不变。
唯一性:
- 列表:允许重复项。
- 元组:允许重复。
- 设置:仅包含唯一元素。
- 字典:唯一键,值可以复制。
数据结构:
- 列表:有序集合。
- 元组:有序集合。
- 套装:无序收藏。
- 字典:键值对的集合
列表:多才多艺的系列
定义:列表是可以具有不同类型的项的有序集合。它们是可变的,这意味着在创建列表后可以更改它们的元素。
语法: 用方括号 [] 创建。
特征:
- 基于索引:您可以按元素在列表中的位置访问元素。
- 允许重复元素。
- 可以添加、删除或更改元素。
用例:当您需要可能需要修改的有序项目集合时,或者当您想要存储一系列项目时。
语法和示例:
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() 方法计算特定元素的出现次数。
猜你喜欢
- 2024-12-11 python每天学习一点点(遍历列表-for循环)
- 2024-12-11 python数据类型(三):列表
- 2024-12-11 python教程从基础到精通,第5课—List列表
- 2024-12-11 如何在 Python 中同时对平行列表进行排序
- 2024-12-11 4种方法详解:Python列表倒序输出问题,快速提高你的编程效率
- 2024-12-11 一学就废|Python基础碎片,列表(List)
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)