python学习从0到专家(8)容器之列表、元组、字典、集合、字符串小结

在 Python 中,不同的数据类型(如列表、元组、字典、集合、字符串等)都有各自的属性和方法,同时也涉及到遍历、深浅复制等重要概念。以下是对这些内容的全面详细解析:

1. 列表(list)

  • 属性和方法
    • append(x) :在列表末尾添加一个元素 x
    • extend(iterable):将可迭代对象中的所有元素添加到列表末尾。
    • insert(i, x) :在指定索引 i 处插入元素 x
    • remove(x) :移除列表中第一个值为 x 的元素,若不存在则抛出 ValueError
    • pop([i]) :移除并返回指定索引 i 处的元素,若不指定索引则默认移除并返回最后一个元素。
    • clear():移除列表中的所有元素。
    • index(x[, start[, end]]) :返回列表中第一个值为 x 的元素的索引,若不存在则抛出 ValueError
    • count(x) :返回元素 x 在列表中出现的次数。
    • sort(key=None, reverse=False) :对列表进行排序,key 用于指定排序规则,reverseTrue 时降序排序,False 时升序排序(默认)。
    • reverse():反转列表中的元素顺序。
    • copy():返回列表的浅拷贝。
  • 遍历
    • 使用 for 循环for element in my_list: 直接遍历列表元素。
    • 使用 for 循环和 range() 函数for i in range(len(my_list)): 通过索引访问元素。
    • 使用 enumerate() 函数for index, element in enumerate(my_list): 同时获取索引和元素。
  • 深浅复制
    • 浅复制 :使用 copy() 方法或 list() 构造函数,如 new_list = my_list.copy()new_list = list(my_list)。浅复制只复制顶层元素,嵌套的可变对象(如列表中的子列表)仍然是引用。
    • 深复制 :需要导入 copy 模块,使用 deepcopy() 函数,如 import copy; new_list = copy.deepcopy(my_list)。深复制会递归地复制所有层次的对象。

2. 元组(tuple)

  • 属性和方法
    • count(x) :返回元素 x 在元组中出现的次数。
    • index(x[, start[, end]]) :返回元组中第一个值为 x 的元素的索引,若不存在则抛出 ValueError
  • 遍历 :和列表类似,可使用 for 循环、for 循环结合 range() 函数以及 enumerate() 函数。
  • 深浅复制:由于元组是不可变的,对元组进行复制时,无论是浅复制还是深复制,实际上都是返回对原元组的引用,因为元组的内容不能被修改。

3. 字典(dict)

  • 属性和方法
    • clear():移除字典中的所有键值对。
    • copy():返回字典的浅拷贝。
    • fromkeys(iterable[, value]) :创建一个新字典,以可迭代对象中的元素作为键,value 作为所有键对应的初始值(默认为 None)。
    • get(key[, default]) :返回指定键 key 对应的值,若键不存在则返回 default(默认为 None)。
    • items():返回一个包含所有键值对的视图对象,可用于遍历字典的键值对。
    • keys():返回一个包含所有键的视图对象,可用于遍历字典的键。
    • pop(key[, default]) :移除并返回指定键 key 对应的值,若键不存在则返回 default(默认为 None),若不提供 default 且键不存在则抛出 KeyError
    • popitem() :移除并返回字典中的最后一对键值对,若字典为空则抛出 KeyError
    • setdefault(key[, default]) :如果键 key 不存在,将其添加到字典中并设置值为 default(默认为 None),然后返回该键对应的值。
    • update(other) :使用来自 other(可以是字典或可迭代的键值对)的键值对更新字典。
    • values():返回一个包含所有值的视图对象,可用于遍历字典的值。
  • 遍历
    • 遍历键for key in my_dict:for key in my_dict.keys():
    • 遍历值for value in my_dict.values():
    • 遍历键值对for key, value in my_dict.items():
  • 深浅复制
    • 浅复制 :使用 copy() 方法或 dict() 构造函数,如 new_dict = my_dict.copy()new_dict = dict(my_dict)。浅复制只复制顶层键值对,嵌套的可变对象仍然是引用。
    • 深复制 :导入 copy 模块,使用 deepcopy() 函数,如 import copy; new_dict = copy.deepcopy(my_dict)。深复制会递归地复制所有层次的对象。

4. 集合(set)

  • 属性和方法
    • add(x) :将元素 x 添加到集合中。
    • clear():移除集合中的所有元素。
    • copy():返回集合的浅拷贝。
    • difference(other) :返回一个新集合,包含在当前集合中但不在 other 集合中的元素,等价于 self - other
    • difference_update(other) :从当前集合中移除在 other 集合中出现的元素,等价于 self -= other
    • discard(x) :从集合中移除元素 x,若元素不存在不会抛出异常。
    • intersection(other) :返回一个新集合,包含同时在当前集合和 other 集合中的元素,等价于 self & other
    • intersection_update(other) :更新当前集合,使其只包含同时在当前集合和 other 集合中的元素,等价于 self &= other
    • isdisjoint(other) :如果当前集合和 other 集合没有共同元素,则返回 True,否则返回 False
    • issubset(other) :如果当前集合是 other 集合的子集,则返回 True,否则返回 False,等价于 self <= other
    • issuperset(other) :如果当前集合是 other 集合的超集,则返回 True,否则返回 False,等价于 self >= other
    • pop() :移除并返回集合中的一个任意元素,若集合为空则抛出 KeyError
    • remove(x) :从集合中移除元素 x,若元素不存在则抛出 KeyError
    • symmetric_difference(other) :返回一个新集合,包含只在当前集合或 other 集合中出现的元素,等价于 self ^ other
    • symmetric_difference_update(other) :更新当前集合,使其包含只在当前集合或 other 集合中出现的元素,等价于 self ^= other
    • union(other) :返回一个新集合,包含在当前集合和 other 集合中的所有元素,等价于 self | other
    • update(other) :更新当前集合,使其包含在当前集合和 other 集合中的所有元素,等价于 self |= other
  • 遍历 :使用 for 循环遍历集合元素,如 for element in my_set:
  • 深浅复制 :集合的 copy() 方法是浅复制,对于集合中的不可变元素(如数字、字符串等),浅复制和深复制效果相同,因为不可变元素无法修改;若集合中包含可变元素(如列表),则需要使用 copy 模块的 deepcopy() 函数进行深复制。

5. 字符串(str)

  • 属性和方法
    • capitalize():将字符串的第一个字符转换为大写,其余字符转换为小写。
    • casefold() :将字符串转换为小写形式,比 lower() 更强大,能处理一些特殊字符。
    • center(width[, fillchar]) :返回一个原字符串居中,并使用 fillchar(默认空格)填充至长度为 width 的新字符串。
    • count(sub[, start[, end]]) :返回子字符串 sub 在字符串中出现的次数。
    • encode(encoding='utf-8', errors='strict'):将字符串编码为字节对象。
    • endswith(suffix[, start[, end]]) :检查字符串是否以 suffix 结尾,返回 TrueFalse
    • expandtabs(tabsize=8) :将字符串中的制表符 \t 转换为空格,tabsize 指定每个制表符的宽度。
    • find(sub[, start[, end]]) :查找子字符串 sub 在字符串中第一次出现的索引,若不存在则返回 -1
    • format(*args, **kwargs):格式化字符串,使用传入的参数替换字符串中的占位符。
    • index(sub[, start[, end]]) :查找子字符串 sub 在字符串中第一次出现的索引,若不存在则抛出 ValueError
    • isalnum() :如果字符串中的所有字符都是字母或数字,则返回 True,否则返回 False
    • isalpha() :如果字符串中的所有字符都是字母,则返回 True,否则返回 False
    • isascii() :如果字符串中的所有字符都是 ASCII 字符,则返回 True,否则返回 False
    • isdecimal() :如果字符串中的所有字符都是十进制数字,则返回 True,否则返回 False
    • isdigit() :如果字符串中的所有字符都是数字,则返回 True,否则返回 False
    • isidentifier() :如果字符串是有效的 Python 标识符,则返回 True,否则返回 False
    • islower() :如果字符串中的所有字母都是小写字母,则返回 True,否则返回 False
    • isnumeric() :如果字符串中的所有字符都是数字字符(包括汉字数字等),则返回 True,否则返回 False
    • isprintable() :如果字符串中的所有字符都是可打印字符,则返回 True,否则返回 False
    • isspace() :如果字符串中只包含空白字符,则返回 True,否则返回 False
    • istitle() :如果字符串是标题格式(每个单词的首字母大写),则返回 True,否则返回 False
    • isupper() :如果字符串中的所有字母都是大写字母,则返回 True,否则返回 False
    • join(iterable):使用字符串作为分隔符,将可迭代对象中的元素连接成一个新的字符串。
    • ljust(width[, fillchar]) :返回一个原字符串左对齐,并使用 fillchar(默认空格)填充至长度为 width 的新字符串。
    • lower():将字符串中的所有大写字母转换为小写字母。
    • lstrip([chars]):移除字符串开头的指定字符(默认为空白字符)。
    • maketrans(x[, y[, z]]) :创建一个字符映射转换表,用于 translate() 方法。
    • partition(sep) :根据分隔符 sep 将字符串分为三部分,返回一个包含分隔符前、分隔符、分隔符后的元组。
    • removeprefix(prefix) :如果字符串以 prefix 开头,则移除 prefix 并返回剩余部分,否则返回原字符串(Python 3.9+)。
    • removesuffix(suffix) :如果字符串以 suffix 结尾,则移除 suffix 并返回剩余部分,否则返回原字符串(Python 3.9+)。
    • **`replace(old, new[, count
相关推荐
lllsure2 小时前
Python基础语法
开发语言·python
丰锋ff2 小时前
考研英一学习笔记 2018年
笔记·学习·考研
1296004522 小时前
pytorch基础的学习
人工智能·pytorch·学习
zxctsclrjjjcph3 小时前
【高并发内存池】从零到一的项目之centralcache整体结构设计及核心实现
开发语言·数据结构·c++·链表
zm3 小时前
服务器多客户端连接核心要点(1)
java·开发语言
winfredzhang3 小时前
使用Python 打造多格式文件预览工具 — 图、PDF、Word、Excel 一站式查看
python·pdf·word·excel·照片·查看,zip,复制
浩皓素3 小时前
Python连接云端服务器:基于Paramiko库的实践与问题剖析
python
炯哈哈3 小时前
【上位机——MFC】单文档和多文档视图架构
开发语言·c++·mfc·上位机
FuckPatience3 小时前
关于C#项目中 服务层使用接口的问题
java·开发语言·c#
致于数据科学家的小陈3 小时前
Go 层级菜单树转 json 处理
python·go·json·菜单树·菜单权限·children