Python列表索引和切片是指如何从列表或类似数组的对象中选择和筛选数据。这里讨论的技术也适用于元组。
列表(List)与元组(Tuple)
如果你熟悉VBA或其他编程语言,Python列表和元组基本上都是数组。列表或元组可以包含任何类型的对象/数据,它们之间的区别在于列表是可变的(可以修改),元组是不可变的(不能修改)。
有趣的事实是:String(字符串)对象实际上是一个元组!这意味着你不能修改字符串对象中的单个字母。
准备列表
我们将使用一个简单的列表来演示这些技术。在本文中,我们不需要任何库,只需要纯Python列表操作。注意,Python使用基于0的索引,这意味着索引从0开始,而不是从1开始。
li = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’]
li2 = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’]
图1:Python列表演示
Python列表基本操作
Python列表只有几个内置函数,这里介绍其中的几个:
- append():将项目元素添加到列表中
- extend():向列表中添加项目元素。append和extend的区别,append添加1个项目,extend添加一个列表。
- remove():从列表中删除项目元素。
- pop():从列表中删除最后一项元素,并将其返回。
- insert():在列表中插入一项元素。
- index():返回元素的索引。
选择项目元素
图2
从列表末尾访问项目元素
图3
切片/选择各种项目
python列表使用符号[n:m]来表示一个“切片”,字面上是指从第n项到第m项的多个连续项。Python列表切片有一种奇怪的表示法:开始项使用基于0的索引,而结束项使用基于1的索引。参阅下面的代码和视觉辅助工具以供参考。
图4
图5
上述切片从第二个元素(1)开始,在第五个元素(5)结束,分别是B和E。
在下列情况下,可以省略起始索引或结束索引:
- 从开头开始:li[:5],返回前5项:['A','B','C','D','E']
- 以最后一项结尾:li[5:],返回最后5项:['F','G','H','I','J']
- 也可以使用li[:],这是完整的列表,就像li一样
反转列表
有两种方法可以反转列表。一种是内置方法,另一种是通过切片。
注意:
- .reverse()方法覆盖原始列表。
- 切片不会覆盖原始列表,因为它返回列表的“切片”
图6
合并不同的列表
有两种方法可以合并不同的列表:.extend()方法或只使用+符号。
- extend()方法合并两个列表,然后将结果列表赋值给原始列表。
- +符号也合并两个(或多个)列表,但不会覆盖原始列表。
图7
从列表中删除重复值
列表可以包含任何类型的数据项,包括重复项。有几种方法可以删除重复的值,这里将介绍一种更具python风格的方法。为此,我们需要了解另一种数据结构:集(set)。集是不同项的无序集合,使用一对花括号来表示集。
这里的思路是首先将列表转换为一个集(因此保留不同的项),然后将集转换回列表。参见以下示例:
图8
注:本文学习整理自pythoninoffice.com。