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

Python 内置的一些数据结构

文章目录

  • 1. 列表 (List)
    • 1.1 列表的切片
    • 1.2 列表推导式(List Comprehensions)
      • 基本语法
      • 包含条件的列表推导式
      • 多重循环
      • 优点
      • 注意事项
  • 2. 元组 (Tuple)
  • 3. 字典 (Dictionary)
  • 4. 集合 (Set)
  • 5. 字符串 (String)


Python 提供了几种内置的数据结构来存储和操作数据,每种都有其独特的特点和用途。下面是一些常用的数据结构及其简要说明:

1. 列表 (List)

列表是一种可变的有序集合,可以存放任意类型的数据。列表中的元素可以通过索引访问,索引从0开始。

特点:

  • 可变性:可以添加、删除或修改元素
  • 异质性:列表中的元素可以是不同类型的数据。
  • 有序性:元素有固定的顺序。

示例:

my_list = [1, "two", 3.0]

1.1 列表的切片

在 Python 中,列表支持切片操作,它允许你通过指定起始索引结束索引获取列表的一个子集。基本格式为 list[start:end],其中 start 是子列表的第一个元素的索引(包含),end 是子列表最后一个元素之后的索引(不包含)。 # 注意是索引 , 索引从0开始

  • 如果省略 start,则默认从列表的开始位置开始; [:n]

  • 如果省略 end,则默认到列表的结束位置为止。 [n:]

  • 举个例子,如果 a = [1, 2, 3]

    • len(a) 返回 3,表示 a 有三个元素。
    • a[3:] 在这里意味着从索引 3 开始直到结束的所有元素,但实际上这是一个空切片,因为索引 3 已经超出了当前列表的范围。
    • a[3:] = [4] 将会把 [4] 放入这个空切片的位置,结果就是 a 变成 [1, 2, 3, 4]

1.2 列表推导式(List Comprehensions)

Python 中一种简洁而强大的创建列表的方法。它允许你通过一个表达式和一个循环来生成一个新的列表,通常还可以包含条件语句。列表推导式可以看作是 (一个或多个)for 循环和(一个或多个) if 语句的结合,用于生成列表的元素。

基本语法

列表推导式的语法结构如下:

[expression for item in iterable if condition]
  • expression:用于生成列表中每个元素的表达式。
  • item:循环变量,代表 iterable 中的每个元素。
  • iterable:一个可迭代对象,如列表、元组、字符串等。
  • if condition:可选的条件语句,用于过滤元素。

示例

假设我们要创建一个列表,其中包含 0 到 9 的每个数字的平方。可以使用以下列表推导式:

squares = [x**2 for x in range(10)]

这行代码等价于以下的 for 循环:

squares = []
for x in range(10):squares.append(x**2)

两者都会生成相同的列表 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

包含条件的列表推导式

列表推导式还可以包含条件语句,例如,如果我们只想包含偶数的平方,可以这样做:

even_squares = [x**2 for x in range(10) if x % 2 == 0]

这将生成 [0, 4, 16, 36, 64],因为只有偶数的平方才会被包含在列表中。

多重循环

列表推导式还可以包含多个 for 循环,例如,创建一个二维列表:

matrix = [[x * y for x in range(3)] for y in range(3)]

这将生成一个 3x3 的矩阵:

[[0, 0, 0],[0, 1, 2],[0, 2, 4]]

优点

  • 简洁性:列表推导式通常比等价的 for 循环更简洁。
  • 易读性:当逻辑简单时,列表推导式可以提高代码的可读性。
  • 效率:在某些情况下,列表推导式比等价的 for 循环更快,因为它们是用 C 语言编写的底层实现。

注意事项

  • 列表推导式在处理大量数据时可能会消耗大量内存,因为它会一次性生成整个列表。
  • 如果逻辑复杂,使用 for 循环可能更易读和维护。

列表推导式是 Python 中非常有用的功能,它使得创建和操作列表变得更加简单和高效。


2. 元组 (Tuple)

元组也是一种有序集合,但它一旦创建后就不能修改,即它是不可变的。

特点:

  • 不可变性:不能添加、删除或修改元素
  • 异质性:元组中的元素也可以是不同类型的数据。
  • 有序性:元素有固定的顺序

示例:

my_tuple = (1, "two", 3.0)

3. 字典 (Dictionary)

字典是一种可变的无序集合,它通过键值对来存储数据,每个键都唯一对应一个值。

特点:

  • 可变性:可以添加、删除或修改键值对。
  • 键的唯一性:每个键都是唯一的,不允许重复。
  • 无序性:Python 3.7之前,字典的元素是没有顺序的;从Python 3.7开始,由于实现的变化,字典保持了元素插入的顺序。

示例:

my_dict = {"one": 1, "two": 2, "three": 3}

4. 集合 (Set)

集合是一个无序且不包含重复元素的集合。

特点:

  • 无序性:集合中的元素没有固定的顺序。
  • 无重复性:集合内的元素都是唯一的,不允许重复。

示例:

my_set = {1, 2, 3, 3}  # 重复的3会被忽略
print(my_set)  # 输出: {1, 2, 3}

5. 字符串 (String)

虽然字符串通常被认为是基本数据类型,但在很多方面它们也表现得像一个数据结构,因为它们是由字符组成的序列。
语法

  1. 标注
    可以用双引号”Hello World“
    也可用单引号 'Hello World' #两种都可以用,可以根据串内是否有单双引号来决定用哪个(避免语义冲突)
>>> 'doesn\'t'  #有语义冲突就 用转义字符 \
"doesn't"
>>> "doesn't"  # ...or use double quotes instead
"doesn't">>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'
  1. 连接 与 切片
    可用+ 连接字符串,也可用索引的方式获得字符串切片(字符就是最小的字符串)
    字符串可以由 + 操作符连接(粘到一起),可以由 * 表示重复
    也可通过索引获得字符串片段 s[0:5]

特点:

  • 不可变性:字符串一旦创建就不可更改。
  • 有序性:字符串中的字符有固定的顺序。

示例:

my_string = "hello"

以上就是Python中常用的几种数据结构。每种结构都有自己的优势和最佳使用场景,选择合适的数据结构对于编写高效和易于维护的代码至关重要。


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

相关文章:

  • 轧钢测径仪对热轧产线实现温度系数自动修正!
  • 从头开始学MyBatis—02基于xml和注解分别实现的增删改查
  • Springboot项目打war包运行及错误解决
  • 文献速递 | E3泛素连接酶PELI2介导STING信号激活的阈值设定
  • 每日处理250亿个事件,Canva如何应对数据洪流
  • VSCode 离线安装中文语言包
  • NFT Insider #147:Sandbox 人物化身九月奖励上线;Catizen 付费用户突破百万
  • 云服务器拉取docker镜像
  • Qt 实现自定义截图工具
  • 基于STM32的汽车仪表显示系统:集成CAN、UART与I2C总线设计流程
  • 应用程序中的服务器错误怎么办?
  • 成功晋级 | 3本ELSEVIER期刊正式被ESCI收录,最快的录用后2天即可出版
  • 第二篇 第11章 筹资管理
  • Vue3项目中使用bootstrap5
  • 喜报!普罗格入选软件百强企业榜单
  • 灵雀云DevOps:加速应用交付,点燃业务创新引擎
  • 见刊丨“GPU池化”术语发布
  • 享元模式详解:解锁高效资源管理的终极武器
  • UEFI——PEI阶段
  • 2024合格评定服务贸易便利化论坛圆满落幕