5.列表
列表是实际应用非常多的一种数据类型,需要好好掌握。列表的主要特性如下所示:
- 1.支持增加、修改和删除元素操作
- 2.列表的长度是可变的
- 3.列表支持排序
5.1 索引与切片
列表中索引是从0开始,且支持正向和反向两种索引方式。如下所示:
a=[1,2,"abc",[4,5,6],{"a":7,"b":8},(10,20)]
print(f"取出列表中第1个元素:{a[0]}")
print(f"取出列表中元素类型为列表的元素:{a[3]}")
print(f"取出列表第2到第4个元素:{a[2:5]}")
输出结果如下所示:
取出列表中第1个元素:1
取出列表中元素类型为列表的元素:[4, 5, 6]
取出列表第2到第4个元素:['abc', [4, 5, 6], {'a': 7, 'b': 8}]
5.2 修改元素
修改列表的元素其实非常简单,示例代码如下所示:
a=[1,2]
a[0]=100
print(a)
输出结果如下所示:
[100, 2]
5.3 常用方法
- append():在列表末尾追加元素
- insert():在指定索引位置中添加元素
- del:删除元素(物理删除)
- pop():删除元素(逻辑删除),类似于栈弹出元素
- remove():根据值删除元素
- sort():对列表进行永久性排序,常用形式为list.sort()
- sorted()对列表进行临时性排序,常用形式为sorted(list)
- reverse():倒序输出列表
- extend():向一个列表添加列表
- len():获取列表的长度
- clear():清空列表元素,保留空列表
- index():获取指定元素在列表的索引位置
- count():统计列表中元素的出现次数
示例代码如下所示:
a=[1,2]
b=[3,4,5]
c=[9,0,10,12]
d=[9,0,10,12]
# 列表追加元素:
a.append(100)
# 列表插入元素
a.insert(1,999)
# 删除元素,这种删除需要事先知道索引,删除之后无法再进行访问
del a[-1]
# 删除元素,将元素删除后,仍然可以其删除的值,pop如果不填写索引,则默认删除末尾的元素
popValueA=a.pop()
popValueB=a.pop(0)
print(f"{a} {popValueA} {popValueB}")
# 对列表进行永久排序
print(f"列表进行永久性排序,排序前:{c}")
c.sort()
print(f"列表进行永久性排序,排序后:{c}")
# 对列表进行临时排序
print(f"列表进行临时性排序,排序前:{d}")
sorted(d)
print(f"列表进行临时性排序,排序后:{d}")
d.reverse()
print(f"列表倒序输出:{d}")
a.extend(d)
print(f"向列表中添加列表:{a}")
print(f"获取列表的长度:{len(a)}")
a.clear()
print(f"清空列表,仅保留空列表:{a}")
print(f"获取指定元素在列表的索引:{d.index(9)}")
print(f"统计元素在列表中出现的次数:{d.count(9)}")
输出结果如下所示:
[999] 2 1
列表进行永久性排序,排序前:[9, 0, 10, 12]
列表进行永久性排序,排序后:[0, 9, 10, 12]
列表进行临时性排序,排序前:[9, 0, 10, 12]
列表进行临时性排序,排序后:[9, 0, 10, 12]
列表倒序输出:[12, 10, 0, 9]
向列表中添加列表:[999, 12, 10, 0, 9]
获取列表的长度:5
清空列表,仅保留空列表:[]
获取指定元素在列表的索引:3
统计元素在列表中出现的次数:1
5.4 列表拼接:
元组拼接有两种方式:
- +:首尾拼接
- *:复制拼接
示例代码如下所示:
a=[1,2]
b=[3,4,5]
print(f"列表首尾拼接:{a+b}")
print(f"复制拼接:{b*3}")
输出结果如下所示:
列表首尾拼接:[1, 2, 3, 4, 5]
复制拼接:[3, 4, 5, 3, 4, 5, 3, 4, 5]
5.5 转换数据类型
使用list()和tuple()函数可以方便在列表和元组中转换数据类型,如下所示:
a=[1,2]
c=(3,4,5)
print(f"列表转换为元组:{tuple(a)}")
print(f"元组转换为列表:{list(c)}")
输出结果如下所示:
列表转换为元组:(1, 2)
元组转换为列表:[3, 4, 5]
5.6 优缺点
- 优点:灵活好用,可索引、可切片、可更改、可附加、可插入、可删除
- 缺点:相比元组创建和遍历速度慢,占内存。此外查找和插入时间较慢。
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注: