Python中列表、切片和序列的区别

2025年1月5日 | 阅读 7 分钟

引言

Python 是一种流行的语言,用于执行各种任务;它支持多种数据类型,这些数据类型根据其特定用途进行了调整。列表、序列和切片是这些结构中操作和维护数据的基本部分。尽管每种数据类型之间存在相似之处,但它们在用途和呈现方式上确实有所不同。因此,这篇内容可以帮助您学习和理解 Python 中列表、序列和切片在定义、属性和用途方面的区别。

1. Python 中的列表

列表:列表是 Python 中的一种数据结构,其特点是一个有序的、按顺序排列的对象集合

定义和特征

列表是 Python 编程语言中各种类型和数量的有序对象集合的一个实例。需要注意的是,大多数列表是无序且可变的,这意味着列表中的值即使在放入列表后也可以轻松修改。这使得列表成为 Python 语言中最常用的数据结构之一。

创建

创建列表有几种技术,其中包括将元素序列放在方括号 [] 中,并用逗号分隔

特点

  • 顺序保持:特定列表中的所有元素都具有顺序属性。第一个元素位于开头,索引号为 0,第二个元素紧随第一个元素,索引号为 1,依此类推。
  • 可变性:元素的数量可以更改或删除,或者可以用新元素替换元素。
  • 异构元素:Java 中的列表数据类型可以包含任何基本类型的元素,包括整数、字符串、对象等。
  • 动态大小:关于列表的一个有用的知识是,它们的大小可以不同,并且可以随着新项目的添加或删除而改变。

操作

1. 索引:简单来说,我们可以通过索引访问元素。

输出

3

2. 切片:仅保留列表的一部分。

输出

[2, 3, 'a']

3. 添加:在列表的最后一个位置插入一个项目。

输出

[1, 2, 3, 'a', 'b', 'c', 'd']

4. 插入:在某个索引处将元素插入数组。

输出

[1, 2, 'new', 3, 'a', 'b', 'c']

5. 删除:通过指定要删除的值或要删除的元素的位置,从给定列表中删除元素。

输出

[1, 2, 'b', 'c']

6. 迭代:遍历元素。

输出

1
2
3
a
b
c

用例

  • 数据存储:许多人认为收集物品仅与爱好有关,尤其是在将这些物品存储在一个地方时。
  • 动态数据处理:集合的元素数量可以改变的情况。
  • 迭代操作:集合的性质是允许对其执行操作,这需要向主体传达首先识别集合的必要性。

2. Python 中的序列

定义和特征

在 Python 编程中,序列是一个更全面的类别,其中包括列表、元组和字符串等数据类型。序列是由项目有序组合形成的列表,可以通过索引、切片和迭代功能进行操作。

序列的类型

  • 列表:可变序列。
  • 元组:不可变序列。
  • 字符串:Fried、Easterling 和 Kendall 将不可变的字符序列描述为不可变的。

特点

  • 顺序保持:可以注意到,元素始终存在一定的顺序。
  • 索引和切片:如果您需要按网页上的位置访问元素,请使用支持类。
  • 迭代:可以对其进行迭代(使用递增或递减的计数器循环遍历,具体取决于编程所使用的语言)。

操作

  1. 索引:使用其索引检索指定数组中的值。

输出

2

2. 切片:提取子序列。

输出

Hello

3. 连接:简化具有相同元素或可以分组为相同元素的序列。

输出

(1, 2, 3,  4, 5, 6)

4. 重复:重复序列。

输出

1,2,3,1,2,3,1,2,3

不可变序列与可变序列

  • 不可变序列:元组和字符串是其他数据类型,一旦创建,它们就是固定的,并且大小无法更改。因此,它们非常适合用作字典键,并用于安全地保存数据,保持其存储时的状态。
  • 可变序列:列表可以被修改,这使得处理不断变化的数据变得方便。

用例

  • 字符串:编写文本内容并假定其内容是文本数据。
  • 元组:有序对、三元组、矩阵以及任何以特定排列方式保留的数字、值或对象。
  • 列表:收集和存储大量多样化的数据以及数据操作。

3. Python 中的切片

定义和特征

Python 中的切片是一种表示序列的一部分或部分元素的方法。它是一种访问序列(即列表、元组或字符串)的子字符串的方法,从特定索引开始,直到另一个特定索引。

创建

切片是使用冒号创建的:这很可能采用方括号内的运算符 [] 的形式。语法是 sequence'[start:stop: step]'。

输出

[2, 4, 6]

特点

  • 开始、停止、步长:标识要提取的元素的范围和频率。
  • 非破坏性:切片不会改变创建新切片的序列,或使用另一部分的片段。
  • 灵活性:能够表达复杂的数据提取模式。

组成部分

  • 开始:此索引是切片的起始点,即值为 1 表示切片仅包含数组的第一个元素。
  • 停止:切片不包含元素的停止位置(索引)。
  • 步长:切片中连续元素之间的时间差。

操作

1. 基本切片:它可能只提取一个简单的范围。

输出

[0, 1, 2, 3, 4]

2. 带步长的切片:从某些索引开始获取元素,并在一定距离后结束。

输出

[0, 2, 4, 6, 8]

3. 反向切片:将定义序列中的元素集合从右到左克隆。

输出

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

用例

  • 子集数据:将数据拆分为子集的基本方法。
  • 数据分析:这项工作展示了如何利用序列的各个部分。
  • 反转序列:八个球垂直排列在台球桌表面上,并依次排列,给人一种序列的错觉,但它们的序列是反转的,这种免版税的图片。

列表、序列和切片之间的项目、特性和附加项

可变性

  • 列表
  • 序列:它们可能包含其他列表,这使得它们可变,或者它们可以包含元组/字符串,这使得它们不可变。
  • 切片:达到序列的最高点;用新序列替换它们;原始序列被保留。

数据类型

  • 列表:与统一性有关,或者恰恰相反,与非统一性甚至不协调的元素有关。
  • 序列:根据要处理的输入数据类型,可以是列表、元组或字符串。
  • 切片:序列的子集。

用例

  • 列表:数据移动性和数据存储动态。
  • 序列:通用有序集合。
  • 切片:过滤和利用特殊选择的数据。

操作

  • 列表和序列:Open Legal Data Camp 的参与者支持索引、切片、连接、重复和迭代。
  • 切片:主要用于辅助序列提取。

列表、序列和切片之间的区别

特点列表序列切片
定义有序且可变的物品集合。有序物品集合。序列中的元素子集。
索引支持索引。支持索引。不直接适用(可用于创建子序列)。
可变性可变
  • 列表:可变
  • 元组:不可变
  • 字符串:不可变
不可变。
添加元素append()、insert()列表:insert()、append()不适用。
删除元素remove()、pop()、del()列表:remove()、pop()、del()不适用。