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
相关推荐
2301_8029399012 小时前
从零开始学习Redis(五):多级缓存
redis·学习·缓存
沐知全栈开发12 小时前
NumPy 统计函数
开发语言
Chunyyyen12 小时前
【第二十周】自然语言处理的学习笔记05
笔记·学习·自然语言处理
ZPC821012 小时前
opencv 获取图像中物体的坐标值
人工智能·python·算法·机器人
笨鸟笃行13 小时前
百日挑战——单词篇(第十一天)
学习
测试199813 小时前
如何写出一个完整的测试用例?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
微笑尅乐13 小时前
三种方法解开——力扣3370.仅含置位位的最小整数
python·算法·leetcode
青光键主13 小时前
C语言内功强化之const修饰指针
c语言·开发语言
骷大人13 小时前
php安装skywalking_agent
开发语言·php·skywalking
多恩Stone14 小时前
【3DV 进阶-5】3D生成中 Inductive Bias (归纳偏置)的技术路线图
人工智能·python·算法·3d·aigc