当前位置: 首页 > news >正文

Python入门:7.Pythond的内置容器

引言

Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。

一、容器的概念

容器是用来存储多个数据的对象。在 Python 中,容器根据数据是否有序、是否可变、是否重复等特性被划分为多种类型。主要包括以下几类:

  1. 字符串(str):存储字符编码值,不可变,序列。
  2. 列表(list):存储变量,可变,序列。
  3. 元组(tuple):存储变量,不可变,序列。
  4. 字典(dict):存储键值对,可变,散列,键不能重复且不可变。
  5. 集合(set):存储键,可变,无序且不重复。
    在这里插入图片描述
二、内置容器的详细解析
1. 字符串(String,str)

字符串是一种不可变的有序字符序列。

常用方法表格:
方法名描述
len(s)返回字符串的长度
s.lower()转换为小写
s.upper()转换为大写
s.strip()去除两端的空格或指定字符
s.split()根据指定分隔符拆分字符串
s.join(t)用字符串连接可迭代对象的元素
s.replace(a, b)替换字符串中的子串 a 为 b
示例代码:
text = " Hello, Python! "# 基本操作
print(len(text))        # 输出: 15
print(text.strip())     # 输出: Hello, Python!
print(text.lower())     # 输出:  hello, python!# 分割与连接
words = text.strip().split(", ")
print(words)            # 输出: ['Hello', 'Python!']
joined = "-".join(words)
print(joined)           # 输出: Hello-Python!
2. 列表(List)

列表是一种有序、可变的容器,可以存储任意类型的对象。

常用方法表格:
方法名描述
len(lst)返回列表的长度
lst.append(x)在列表末尾添加元素 x
lst.insert(i, x)在索引 i 处插入元素 x
lst.pop([i])删除并返回索引 i 处的元素(默认为末尾)
lst.remove(x)删除第一个值为 x 的元素
lst.sort()对列表进行排序(默认升序)
lst.reverse()将列表反转
示例代码:
fruits = ['apple', 'banana', 'cherry']# 添加和删除元素
fruits.append('orange')
print(fruits)             # 输出: ['apple', 'banana', 'cherry', 'orange']
fruits.remove('banana')
print(fruits)             # 输出: ['apple', 'cherry', 'orange']# 索引与排序
fruits.insert(1, 'grape')
print(fruits)             # 输出: ['apple', 'grape', 'cherry', 'orange']
fruits.sort()
print(fruits)             # 输出: ['apple', 'cherry', 'grape', 'orange']
3. 元组(Tuple)

元组是一种有序、不可变的容器。

常用方法表格:
方法名描述
len(tpl)返回元组的长度
tpl.index(x)返回元素 x 的第一个索引
tpl.count(x)返回元素 x 出现的次数
示例代码:
coordinates = (10, 20, 30, 20)# 元组操作
print(len(coordinates))      # 输出: 4
print(coordinates.index(20)) # 输出: 1
print(coordinates.count(20)) # 输出: 2
4. 字典(Dictionary,dict)

字典是一种无序的键值对(key-value pair)容器。

常用方法表格:
方法名描述
len(d)返回字典中键值对的数量
d[k]返回键 k 对应的值
d.clear()清空字典中的所有键值对
d.get(k[, default])返回键 k 对应的值,如果不存在返回默认值
d.keys()返回字典的所有键
d.values()返回字典的所有值
d.items()返回字典的所有键值对
d.pop(k)删除并返回键 k 对应的值
示例代码:
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}# 基本操作
print(len(person))           # 输出: 3
print(person.get('name'))    # 输出: Alice# 修改和删除
person['age'] = 30
person.pop('city')
print(person)                # 输出: {'name': 'Alice', 'age': 30}# 遍历
for key, value in person.items():print(f"{key}: {value}")
5. 集合(Set)

集合是一种无序、不重复元素的容器。

常用方法表格:
方法名描述
len(s)返回集合的大小
s.add(x)向集合添加元素 x
s.remove(x)从集合中删除元素 x
s.union(t)返回两个集合的并集
s.intersection(t)返回两个集合的交集
s.difference(t)返回两个集合的差集
示例代码:
A = {1, 2, 3}
B = {3, 4, 5}# 集合操作
print(A.union(B))           # 输出: {1, 2, 3, 4, 5}
print(A.intersection(B))    # 输出: {3}
print(A.difference(B))      # 输出: {1, 2}# 添加和删除元素
A.add(6)
A.remove(2)
print(A)                    # 输出: {1, 3, 6}
三、容器间的相互转换

Python 的容器可以相互转换,这使得它们在不同场景下非常灵活。

# 列表转集合
unique_items = set([1, 2, 2, 3])# 集合转列表
items = list(unique_items)# 列表转字典
pairs = [('a', 1), ('b', 2)]
d = dict(pairs)
四、总结

选择合适的容器是编程的关键:

  • 需要有序数据并允许重复?使用列表。
  • 数据不变且需要有序?使用元组。
  • 需要快速查找数据?使用字典或集合。
  • 需要唯一值集合且无序?使用集合。
容器类型特点是否可变是否有序是否允许重复
字符串(str)存储字符编码值不可变有序允许
列表(list)存储变量可变有序允许
元组(tuple)存储变量不可变有序允许
字典(dict)存储键值对可变无序不适用(键唯一)
集合(set)存储键可变无序不允许

通过掌握这些内置容器的特点和用法,可以更高效地组织和操作数据,从而编写简洁优雅的 Python 代码。希望本文能帮助你更好地理解和应用这些容器!
在这里插入图片描述


http://www.mrgr.cn/news/81785.html

相关文章:

  • json字符串或者json文件转换成相应的bean,报错“Unrecognized field xxx , not marked as ignorable”
  • pthread_mutex_lock的概念和使用案例
  • 拼多多纠偏,能否实现买卖平权?
  • 【工作感悟】
  • 软考-信息安全-网络安全体系与网络安全模型
  • Llama 3 后训练(三)
  • 2-198基于Matlab-GUI的运动物体追击问题
  • 前端
  • Stable Diffusion绘画 | 电商设计海报
  • 【CSS in Depth 2 精译_096】16.4:CSS 中的三维变换 + 16.5:本章小结
  • 三层交换机配置
  • 003:如何理解 CNN 中的 RGB 图像和通道?
  • SpringBoot(Ⅱ)——@SpringBootApplication注解+自动装配原理+约定大于配置
  • win系统B站播放8k视频启用HEVC编码
  • 【蓝桥杯——物联网设计与开发】拓展模块5 - 光敏/热释电模块
  • Wend看源码-Java-集合学习(List)
  • unity学习1:第1个template的项目platformer 学习
  • 离散数学 群(半群,群,交换群,循环群,对称群,置换群,置换,交代群,轮换)详细,复习笔记
  • khadas edge2安装ubuntu22.04与ubuntu20.04 docker镜像
  • 各种网站(学习资源、常用工具及其他,持续更新中~)
  • 【高阶数据结构】红黑树封装map、set
  • 微服务——部署与运维
  • 1.微服务灰度发布落地实践(方案设计)
  • Fast adaptively balanced min-cut clustering
  • 指针详解之 难点、易错点一次性彻底击碎!
  • 【Java数据结构】LinkedList与链表