Python 的列表是一种有序、可变、可重复元素的数据结构,通常用于存储一组数据项。它顺序地存放元素在类似数组的数据结构里,它同时也可以存储不同数据类型的元素;不同于元组和字符串,列表是可以改变的,即其内容可以被修改。
列表的操作
python 列表的操作主要分为列表的创建、删除、修改、访问、遍历、排序、索引、切片、拼接和相乘等标准序列操作以及其他一系列复杂的操作。
列表创建与删除
列表同时也是 python 内置的一种数据结构,python 提供了内置类 list,创建的列表即属于该内置类。创建列表主要有两种方式,具体如下:
第一种方式,最外层用方括号将初始化的数据项括在里面,每个数据项之前通过英文逗号隔开,创建一个包含元素的列表:
lst = ['RabbitMQ', 'RocketMQ', 'Kafka']
也可以创建一个空列表,只有方括号,没有初始化的元素:
lst = []
第二种方式,通过 python 标准库的内置类 list
进行构造,通过内置类 list,且列表中可以存储不同的数据类型,也可以是任何对象:
lst = list(['tool', 1, 8.8, ('tool188',), ['tool', 188]])
此外,字符串为可迭代的数据对象,也可以构造成字符串列表,字符串为可迭代的数据对象,可以构造成字符串列表:
lst = list('Wide & Deep')
删除列表:
del my_list
列表元素的添加
可以对内置类 list
调用 append
函数将一个对象追加到列表的末尾。
lst.append(85)
使用 insert()
方法在指定位置插入元素:
my_list.insert(2, 7) # 在索引2处插入元素7
修改元素
修改列表中的元素需要使用索引表示将指定索引位置的元素进行重新赋值。
>>> lst = [1, 2, 3]
>>> lst[1] = 4
>>> lst
[1, 4, 3]
列表元素的删除
使用 remove()
方法删除指定值的元素(如果存在多个相同值的元素,只删除第一个):
my_list.remove(4) # 删除值为4的元素
使用 pop()
方法删除指定索引位置的元素,并返回该元素的值:
popped_element = my_list.pop(3) # 删除索引为3的元素,并返回其值
移除列表中的元素,也可以通过 del
语句,通过索引号指定要删除的元素对象。
>>> lst = ['CNN', 'DNN', 'RNN']
>>> del lst[0]
>>> lst
['DNN', 'RNN']
列表元素的访问与计数
可以通过索引号访问列表中的单个元素,也可以通过切片表达方式获取片段列表。
>>> name = list('perl')
>>> name[2]
'r'
>>> name[2:]
['r', 'l']
>>> name[1:] = list('ython')
>>> name
['p', 'y', 't', 'h', 'o', 'n']
访问列表元素通过索引,索引从0开始:
first_element = my_list[0]
使用负数索引从列表末尾开始访问元素:
last_element = my_list[-1]
使用 len()
函数获取列表的长度(元素数量):
length = len(my_list)
使用 count()
方法统计特定值在列表中出现的次数:
count_of_2 = my_list.count(2)
成员资格判断
使用 in
关键字检查某个元素是否在列表中:
is_present = 3 in my_list
遍历列表
python 迭代列表中元素,主要有三种方式,具体如下:
第一种方法,直接遍历列表中元素内容;
for item in lst:
print(item)
第二种方法,借助 range
和 len
内置函数,通过元素索引遍历列表元素;
for i in range(len(lst)):
print(i, lst[i])
当遍历每个元素时,可以知道当前遍历列表的索引号。
第三种方法,通过内置枚举函数 enumerate
直接获取遍历的索引和元素;
for i, item in enumerate(lst):
print(i, item)
列表的切片操作
切片操作用于获取列表中的一部分元素,语法为 my_list[start:stop:step]
,默认 start
为0,stop
为列表末尾,step
为1。
subset = my_list[1:4] # 获取索引1到3的元素
可以使用负数索引和步长来进行更复杂的切片操作。
列表元素的排序与逆序
python 列表的排序主要有两种方式,一种是通过内置函数 sorted,另一种是通过内置类 list 的 sort 方法。
使用 sort()
方法对列表进行升序排序(改变原列表):
my_list.sort()
使用 reverse()
方法逆序列表(改变原列表):
my_list.reverse()
如果不想改变原列表,可以使用 sorted()
函数和切片操作:
sorted_list = sorted(my_list)
reversed_list = my_list[::-1]
列表推导式
列表推导式是一种创建新列表的简洁方法,通过对现有列表的元素进行操作来生成新列表:
squared_list = [x**2 for x in my_list]
列表推导式还可以包含条件语句:
even_numbers = [x for x in my_list if x % 2 == 0]