列表
列表是一个数据的容器,可以保存不同类型的数据对象。
列表属于可变数据类型、有序的、可迭代的。
一、列表的格式
- 语法
# [数据1, 数据2, 数据3, ..., 数据n]
- 代码
# 1. 创建一个有元素的一维列表
lst1 = [1, 2.3, 'A']
# 2. 创建一个空列表
lst2 = [] # 第一种
lst3 = list() # 第二种
二、常用方法
2.1 查
2.1.1 下标
列表是有序的数据类型,因此可以使用下标(索引)来提取列表的元素。
- 下标的代码演示
lst = ['Linux', 'MySQL', 'Tomcat']
print(lst[0]) # 'Linux'
print(lst[1]) # 'MySQL'
print(lst[-1]) # 'Tomcat'
- 切片
lst = ['Linux', 'MySQL', 'Tomcat']
print(lst[1:]) # ['MySQL', 'Tomcat']
print(lst[1:2:-1]) # []
print(lst[:3:]) # ['Linux', 'MySQL', 'Tomcat']
2.1.2 方法(查询下标)
方法 | 描述 |
---|---|
L.index(value[, start[, stop]) -> int | 查找列表中指定元素的下标,如果没有找到则报错 |
L.count(value) -> int | 统计出列表中指定元素的个数,如果没有找到则返回0 |
index()
:查找下标
lst = ['Linux', 'MySQL', 'Tomcat']
print(lst.index('Tomcat')) # 2
print(lst.index('PostgreSQL')) # 报错
count()
:统计元素的个数
lst = ['Linux', 'MySQL', 'Tomcat', 'Tomcat']
print(lst.count('Tomcat')) # 2
print(lst.count('PostgreSQL')) # 0
2.2 增
由于列表为可变数据类型,可以对列表进行增删改,不会产生新的对象,操作的结果会改变原列表对象。
方法 | 描述 |
---|---|
L.append(object) -> None | 将一个对象追加到列表的末尾,这个对象会做列表的一个元素 |
L.extend(iterable) -> None | 将可迭代对象进行解包,解包后的多个结果作为列表的多个元素 |
L.insert(index, object) -> None | 将对象插入到列表中指定下标元素之前 |
append(object)
lst = ['Linux', 'MySQL', 'Tomcat']
print(lst) # ['Linux', 'MySQL', 'Tomcat']
# 追加一个数字 98
lst.append(98) # 这个返回值永远为 None
print(lst) # ['Linux', 'MySQL', 'Tomcat', '98']
extend()
:参数必须为可迭代对象
lst = ['Linux', 'MySQL', 'Tomcat']
# 解包追加一个字符串
lst.extend('WHY') # 先拆包,后追加
print(lst) # ['Linux', 'MySQL', 'Tomcat', 'W', 'H', 'Y']
# 解包追加一个数字序列
lst.extend(range(3))
print(lst) # ['Linux', 'MySQL', 'Tomcat', 'W', 'H', 'Y', 0, 1, 2]
# 解包追加一个列表
lst.extend([0, 1, 2])
print(lst) # ['Linux', 'MySQL', 'Tomcat', 'W', 'H', 'Y', 0, 1, 2, 0, 1, 2]
insert()
:在指定下标元素之前插入一个对象
lst = ['Linux', 'MySQL', 'Tomcat']
lst.insert(1, 'ABC')
print(lst) # ['Linux', 'ABC', 'MySQL', 'Tomcat']
lst.insert(0, 'ABC')
print(lst) # ['ABC', 'Linux', 'ABC', 'MySQL', 'Tomcat']
lst.insert(-1, [1, 2])
print(lst) # ['ABC', 'Linux', 'ABC', 'MySQL', [1, 2], 'Tomcat']
2.3 删
方法 | 描述 |
---|---|
del object | 使用关键字del 来删除指定的对象 |
L.pop([index]) -> item | 默认删除列表中最后一个元素,并返回删除的元素,可以指定下标删除对应元素 |
L.remove(value) -> None | 移除指定的元素,参数为元素本身;如果元素不存在,则报错 |
L.clear() -> None | 清空列表 |
del object
lst = ['Linux', 'MySQL', 'Tomcat']
del lst[1]
print(lst) # ['Linux', 'Tomcat']
del lst
print(lst) # NameError: name 'lst' is not defined
pop()
:删除元素并返回元素
lst = ['Linux', 'MySQL', 'Tomcat']
print(lst.pop())) # 'Tomcat'
print(lst) # ['Linux', 'MySQL']
print(lst.pop(-2)) # Linux
print(lst) # ['MySQL']
remove()
:移除元素,元素不存在则报错
lst = ['Linux', 'MySQL', 'Tomcat']
lst.remove('MySQL')
print(lst) # ['Linux', 'Tomcat']
lst.remove('PostgreSQL') # ValueError: list.remove(x): x not in list
clear()
:清空列表
lst = ['Linux', 'MySQL', 'Tomcat']
lst.clear()
print(lst) # []
2.4 改
2.4.1 修改指定下标数据
lst = ['Linux', 'MySQL', 'Tomcat']
lst[1] = 'PostgreSQL'
print(lst)
lst = ['Linux', 'MySQL', 'Tomcat']
lst[1:] = ['PostgreSQL']
print(lst) # ['Linux', 'PostgreSQL']
# 练习:通过切片修改原列表,将列表清空
lst[:] = []
print(lst)
2.4.2 方法
方法 | 描述 |
---|---|
L.reverse() -> None | 逆置。直接将原列表反向排列。 |
L.sort(*, key=None, reverse=False) -> None | 如果不传入参数,会将原列表升序排列 |
reverse()
:逆置
lst = ['Linux', 'MySQL', 'Tomcat']
lst.reverse()
print(lst)
lst = [6, 2, 3, 1, 8]
lst.reverse()
print(lst) # [8, 1, 3, 2, 6]
sort()
:
lst = [6, 2, 3, 1, 8]
lst.sort()
print(lst) # [1, 2, 3, 6, 8]
lst.sort(reverse=True)
print(lst) # [8, 6, 3, 2, 1]
2.5 复制
方法 | 描述 |
---|---|
L.copy() -> List | 复制原列表,生成一个新的列表对象 |
copy()
:将原列表拷贝一份,生成一个新的列表
lst = ['Linux', 'MySQL', 'Tomcat']
print(lst.copy()) # ['Linux', 'MySQL', 'Tomcat']
print(lst) # ['Linux', 'MySQL', 'Tomcat']
三、遍历列表
3.1 while
lst = list('Python') # ['P', 'y', 't', 'h', 'o', 'n']
i = 0
while i < len(lst):
print(lst[i], end=' ')
i += 1
3.2 for
lst = list('Python') # ['P', 'y', 't', 'h', 'o', 'n']
# 第一种遍历
for i in lst:
print(i, end=' ')
# 第二种遍历
for i in range(len(lst)):
print(lst[i], end=' ')
四、嵌套列表
列表中可以保存另一个或者多个列表,当一列表中,只嵌套一层列表,那么这个列表就是二维列表。
lst = [['Linux', 'MySQL', 'Tomcat'], [11, 22, 33], ['name', 'age', 'gender']]
# 从lst取出Tomcat字符串
print(lst[0][2]) # 'Tomcat'