Python 四大数据结构详解:元组、列表、集合、字典的特点与增删改查

  1. 元组(Tuple)
    特点:小括号()、不可变、有序、可重复。
    不可变:tuple创建后不能做任何修改,元素无法修改,元组本身无法增加元素或删除元素(所谓的增加/删除元素本质是创建新元组)
    有序:元素有固定顺序
    可重复:可以包含重复元素

Python代码示例:

tup = (1, 2, 3, 2)

print(tup) # (1, 2, 3, 2)

print(tup0) # 1,有序,可索引

print(tup.count(2)) # 2,可重复

#tup0 = 100 # TypeError: 'tuple' object does not support item assignment,创建后不能修改

#新增一个元素(本质是创建新元组):

tup = (1, 2, 3)

tup2 = tup + (4,)

print(tup2) # (1, 2, 3, 4)

print(tup) # (1, 2, 3) 原元组不变

#删除一个元素(本质是创建新元组):

tup = (1, 2, 3)

tup2 = tuple(x for x in tup if x != 3)

print(tup2) # (1, 2)

print(tup) # (1, 2, 3) 原元组不变

  1. 列表List
    特点:中括号 \[\]、可变、有序、可重复。
    可变:List创建后可以修改,元素可以修改,列表本身可以增加元素或删除元素
    有序:元素有固定顺序
    可重复:可以包含重复元素。

Python代码示例:

lst = 1, 2, 3, 2

print(lst) # 1, 2, 3, 2

print(lst0) # 1,有序,可索引

print(lst.count(2)) # 2,可重复

lst0 = 100 # 可变,可以修改

print(lst) # 100, 2, 3, 2

#新增一个元素:

lst = 1, 2, 3

lst.append(4)

print(lst) # 1, 2, 3, 4

#删除一个元素:

lst = 1, 2, 3

lst.remove(2) # 按值删除

print(lst) # 1, 3

#或用 pop 按索引删除:

lst = 1, 2, 3

lst.pop(1) # 删除索引 1

print(lst) # 1, 3

  1. 集合{Set}
    特点:大括号 {}、可变、无序、元素唯一、空集合用 set()。
    可变:Set创建后可以新增或删除元素,但已经存在的元素本身必须不可变,因为元素不能索引
    无序:元素没有固定顺序
    元素唯一:自动去重

Python代码示例:

s = {1, 2, 3, 2, 2}

print(s) # {1, 2, 3},自动去重

#print(s0) # TypeError: 'set' object is not subscriptable,无序,不能索引

s.add(4) # 可变

print(s) # {1, 2, 3, 4}

#新增一个元素:

s = {1, 2, 3}

s.add(4)

print(s) # {1, 2, 3, 4}

#删除一个元素:

s = {1, 2, 3}

s.remove(2)

print(s) # {1, 3}

#remove 删除不存在的元素会报错,可用 discard 更安全:

s = {1, 2, 3}

s.discard(5) # 不存在也不报错

print(s) # {1, 2, 3}

  1. 字典{Dict}
    特点:大括号 {}、可变、无序、键值对、键唯一、值可重复。
    键值对:元素是key:value格式
    可变:键值对中,键无法改修改(d"name" = d.pop("name1")其实是删除旧键 + 新增新键的操作),值可以修改,字典本身可以新增和删除键值对

Python代码示例:

d = {"name": "Alice", "age": 25}

print(d) # {'name': 'Alice', 'age': 25}

d"age" = 26 # 可变,可以修改

print(d) # {'name': 'Alice', 'age': 26}

d2 = {"name": "Alice", "name": "Bob"}

print(d2) # {'name': 'Bob'},键唯一,重复会覆盖

d3 = {"a": 1, "b": 1}

print(d3) # {'a': 1, 'b': 1},值可重复

#新增一个元素(键值对):

d = {"name": "Alice", "age": 25}

d"city" = "Beijing"

print(d) # {'name': 'Alice', 'age': 25, 'city': 'Beijing'}

#删除一个元素(键值对):

d = {"name": "Alice", "age": 25, "city": "Beijing"}

del d"age"

print(d) # {'name': 'Alice', 'city': 'Beijing'}

#或用 pop 删除并返回被删的值:

d = {"name": "Alice", "age": 25}

age = d.pop("age")

print(age) # 25

print(d) # {'name': 'Alice'}

元素(Element):

元组、列表、集合、字典中的单个数据项,比如列表10, "hello" 中的 10 和 "hello"

索引(Index):

元素的位置(从 0 开始),比如my_list0 表示访问第一个元素

长度(Length):

my_tuple是列表,则len(my_tuple) 返回元组my_tuple的元素个数, len(str(my_tuple4))返回元组第5个元素的长度

my_list是列表,则len(my_list) 返回列表my_list的元素个数, len(my_list4)返回列表第5个元素的长度

my_dict是字典,则len(my_dict) 返回字典my_dict的元素个数,len(my_dictkey)可以直接获取字典中某个键对应的值的长度

my_set是集合,则len(my_set) 返回集合my_set的元素个数,len(my_set1)则会报错("'set' object is not subscriptable")

len() 只能用于可迭代对象(如字符串、列表、字典、集合等),而整数没有长度,如果len(int型数字)则会报错"object of type 'int' has no len()"

Python代码示例:

tup = ('a', 'bb', 'ccc', 'dddd')

print(len(tup)) # 4,元素个数

print(tup2) # ccc,第三个元素

print(len(tup2)) # 3,第三个元素的长度

lst = 'a', 'bb', 'ccc'

print(len(lst)) # 3,元素个数

print(lst2) # ccc,第三个元素

print(len(lst2)) # 3,第三个元素的长度

s = {'a', 'bb', 'ccc', 'dddd', 'eeeee'}

print(len(s)) # 5,元素个数

s_list = list(s)

print(s_list2) # 第三个元素(顺序不固定)

print(len(s_list2)) # 第三个元素的长度

d = {"name": "Alice", "age": 25, "city": "Beijing"}

print(len(d)) # 3,键值对个数

d_items = list(d.items())

print(d_items2) # ('city', 'Beijing'),第三个键值对

print(len(d_items20)) # 4,第三个键 'city' 的长度

print(len(d_items21)) # 7,第三个值 'Beijing' 的长度

其他一些示例

{}

{}表示一个空字典,而不是空集合。

my_type = {}

my_type1 = {"a": 1, "b": 2}

print(type(my_type)) # <class 'dict'>

print(type(my_type1)) # <class 'dict'>

set()

set()表示一个空集合。

my_type = set()

my_type1 = {1, 2, 3}

print(type(my_type)) # <class 'set'>

print(type(my_type1)) # <class 'set'>

列表 -1表示取倒数第一个元素

t = 10,9,8,7,6,5,4,3

print(t-1) # 输出:3

print(t-6) # 输出:8

列表清空用clear()函数

my_list = 1, 2, 3, 4, 5

print("原始列表:", my_list) # 输出: 1, 2, 3, 4, 5

my_list.clear()

print("清空后:", my_list) # 输出: \[\]

字典清除某个元素的值(键值对中的值)

my_dict = {'A': 1,2, 'B': 3, 'C': 4}

my_dict'A'.clear()

print(my_dict)

#输出结果

{'A': \[\], 'B': 3, 'C': 4}

或

my_dict = {'name': 'Alice', 'age': 25, 'scores': 85, 90, 78, 'city': 'Beijing'}

my_dict'age' = None

my_dict'scores' = \[\]

print(my_dict)

#输出结果

{'name': 'Alice', 'age': None, 'scores': \[\], 'city': 'Beijing'}

相关推荐
2601_9679801136 分钟前
Python自动化办公:模块、库与样式调整教程
python·excel·自动化办公·openpyxl·样式调整
长沙三为智能科技1 小时前
GEO与传统SEO的5个关键差异:排名与被引用、关键词与答案型的全维度对比
python·aigc·seo·ai搜索·geo优化
量化分析码农2 小时前
【Python量化趋势跟踪实战 02】突破买入总被假突破坑:通道系统与入场时机
python
Agent世界2 小时前
多平台登录态巡检:cookie 判据为什么会撒谎
python
goehou2 小时前
让 AI 替我操作这台电脑,先把手能伸多远定下来
windows·自动化·权限管理·ai agent
公子小六3 小时前
基于.NET的Windows窗体编程之WinForms数据持久化(1)
windows·microsoft·c#·.net·winforms
量化分析码农3 小时前
【Python量化趋势跟踪实战 01】均线多头排列就是趋势开始吗:过滤与确认
python
用户298698530143 小时前
Python 实战:把代码写入 Word 文档的两种实现方式
后端·python·api
小小张说故事3 小时前
Python 里 pickle 到底存了什么:拆开 __reduce__、__getstate__ 和那串能执行代码的字节码
python
reasonsummer4 小时前
【教学类-150-03】20261108蝴蝶连连看html(一页2个版面、3个版面)
python·html