首页 > 编程笔记 > Python笔记 阅读:56

Python list列表的定义和使用(新手必看)

列表(list)是一组有序的数据集合,其中每个成员都有一个索引值,索引值从 0 开始依次递增。

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) 合并列表

合并列表有两种方式:
【实例】通过加法运算符拼接两个列表。
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]:
  1. start_index 是指起始索引值,它是选填参数(可空),默认值是 0;
  2. stop_index 是指结束索引值,它是选填参数(可空),默认取到列表尾索引;
  3. 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)

相关文章