Python list列表的定义和使用(新手必看)
列表(list)是一组有序的数据集合,其中每个成员都有一个索引值,索引值从 0 开始依次递增。
Python 的列表与其他编程语言中数组的概念类似,又有其自身特点。列表中的有序数据的类型可以是 Python 的基础数据类型,也可以是复杂对象。Python 列表成员的数据类型也可以是不同类型。
【实例】Python列表变量的定义。
【实例】通过索引访问列表成员的方法
Python 的列表还可以通过负索引访问。用户可以将索引改为负数 N,访问倒数第 N 个成员。负索引从最后一个成员开始排序,其索引值是 −1。
【实例】通过负索引访问列表成员的方法
列表成员的正负索引如下图所示:

图 1 列表成员的正负索引
无论是正索引还是负索引,访问都不能越界,对于实例中的列表变量 intfs,不能访问索引为 4 或者 −5 的成员,因为超过索引的范围会产生越界,执行代码时将会报错。
【实例】通过内置函数len()计算列表长度。
【实例】调用列表对象的append()方法追加成员。
【实例】通过加法运算符拼接两个列表。
【实例】通过 extend() 方法拼接两个列表。
切片的语法规则形如 [start_index:stop_index:step]:
通过切片操作返回的是一个新的列表,新的列表是从原有列表索引的 start_index 取到 stop_index−1,切取成员的间隔是 step。
【实例】列表的切片操作。
Python 的列表与其他编程语言中数组的概念类似,又有其自身特点。列表中的有序数据的类型可以是 Python 的基础数据类型,也可以是复杂对象。Python 列表成员的数据类型也可以是不同类型。
Python列表的定义
列表的创建方式比较简单,可以用方括号创建,列表中的成员用逗号隔开。【实例】Python列表变量的定义。
intfs = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4' ] dev_info = ['192.168.1.1', 'as01', 'huawei', 'ce6800', 48, ['beijing', 'dc01'] ]程序中,第一个变量 intfs 用于定义一组端口,都是字符串的成员。同类型成员的列表多用于表示同一类事物。第二个变量 dev_info 的定义调整了风格,其成员既有字符串,又有数字,还有列表,即使用多种类型的成员从多维度描述一个事物对象。
Python列表的使用
1) 访问列表成员
列表的成员是有序的,它的所在位置的顺序被称为索引。索引从 0 开始计数。用户可以通过索引访问列表的成员,访问方式是在列表变量后面添加方括号,在方括号中填入索引值即可。【实例】通过索引访问列表成员的方法
intfs = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] intf = intfs[0] # 此处千万不要用int去命名端口变量,会与int(整数)对象冲突 print(intf) # 此处输出'Eth1/1' intf = intfs[2] print(intf) # 此处输出'Eth1/3'
Python 的列表还可以通过负索引访问。用户可以将索引改为负数 N,访问倒数第 N 个成员。负索引从最后一个成员开始排序,其索引值是 −1。
【实例】通过负索引访问列表成员的方法
intfs = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] intf = intfs[-1] print(intf) # 此处输出'Eth1/4'
列表成员的正负索引如下图所示:

图 1 列表成员的正负索引
无论是正索引还是负索引,访问都不能越界,对于实例中的列表变量 intfs,不能访问索引为 4 或者 −5 的成员,因为超过索引的范围会产生越界,执行代码时将会报错。
2) 获取列表长度
如果用户想获取列表长度,那么可以直接调用 Python 的内置函数 len(),将列表变量作为参数传入,即可返回列表的长度。【实例】通过内置函数len()计算列表长度。
intfs = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] intf_sum = len(intfs) print(intf_sum) # 此处输出4
3) 追加列表成员
在创建列表之后,可使用列表的 append() 方法继续在列表内追加成员,将待追加的成员直接传入 append() 方法即可。【实例】调用列表对象的append()方法追加成员。
intfs = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] intfs.append('Eth1/4') print(intfs) # 结果是['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4', 'Eth1/4']
4) 合并列表
合并列表有两种方式:- 一是使用加法运算符,将两个列表拼接,生成一个新的列表;
- 二是使用列表对象的 extend() 方法,将另一个列表成员全部追加到列表对象中,不产生新的列表。
【实例】通过加法运算符拼接两个列表。
intfs_part1 = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] intfs_part2 = ['Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8'] intfs = intfs_part1 + intfs_part2 print(intfs_part1) # 结果是['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] print(intfs_part2) # 结果是['Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8'] print(intfs) # 结果是['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8']
【实例】通过 extend() 方法拼接两个列表。
intfs_part1 = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] intfs_part2 = ['Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8'] intfs_part1.extend(intfs_part2) print(intfs_part1) # 结果是['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4','Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8'] print(intfs_part2) # 结果是['Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8']
5) 列表切片
顾名思义,切片是指从一个已有的列表中切取一“片”子列表。切片的语法规则形如 [start_index:stop_index:step]:
- start_index 是指起始索引值,它是选填参数(可空),默认值是 0;
- stop_index 是指结束索引值,它是选填参数(可空),默认取到列表尾索引;
- step 指步长,是指取成员索引的间隔,默认步长是 1。
通过切片操作返回的是一个新的列表,新的列表是从原有列表索引的 start_index 取到 stop_index−1,切取成员的间隔是 step。
【实例】列表的切片操作。
intfs = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4'] sub_intfs = intfs[1:3] # 从索引 1 开始取,取到索引3的前一个成员,结果是['Eth1/2', 'Eth1/3'] print(sub_intfs) sub_intfs = intfs[:3] # 从第一个索引 0 开始取,取到索引3的前一个成员,结果是['Eth1/1', 'Eth1/2', 'Eth1/3'] print(sub_intfs) sub_intfs = intfs[::2] # 索引可以不写,默认从头取到尾,间隔为2,结果是['Eth1/1', 'Eth1/3'] print(sub_intfs)