列表
表示形式:用中括号,如[1, 2, 3, 4]
分类:
- 一维列表:[1, 2, 3]、
- 二维列表:[[1, 2], [2, 4]]
元素:
- 类型:默认为字符类型或字符串类型(若想用列表的数据进行算术运算,需先将元素转为整型数据)
- 特点:元素有序、可更改、可重复
- 索引【下标,角标】:
- 从左向右开始编号:0,1,2…n-1
- 从右向左编号: -1,-2…
列表的创建
列表名 = [选项1, 选项2, 选项3,…] *列表名其实就是标识符
元素的格式:数字和True/False无需加引号,但是其他含汉字、字母的元素必须加引号
# 创建非空列表
list1 = [1, 2, 3, 4]
list2 = [10, 9, True, '张三', 'a', 'apple']
list3 = list('hello world') # ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
# 创建空列表,且列表长度必定为0---->因此无法给该空列表中任何元素取值,但是可以用空列表来接收非空列表
list1 = []
list2 = list()
列表元素的访问
列表中元素不能整体访问,只能单个存取。给元素取值前,必须先创建列表
修改
# 已经创建了列表,再修改列表中某个元素的值
list1 = [1, 2]
list1[1] = 0
遍历
定义:列表的遍历就是访问列表的每一个元素,可以使用while循环和for-in循环
注意:不要在for-in循环中添加或删除元素
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
for i in list1:
if i % 2 == 0:
print(i, end = " ") # 输出结果为:2 4 6 8
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
i = 0
while i <= 7:
if list1[i] % 2 == 0:
print(list1[i])
i += 1
序列的通用操作
列表组合
将两个列表拼接为一个列表
list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1 + list2) # 输出结果:[1, 2, 3, 4, 5, 6]
列表重复
list1 = [1, 2, 3]
print(list * 2) # 输出结果:[1, 2, 3, 1, 2, 3]
成员运算
- 成员运算符:in, not in
- 运算结果:布尔值
list1 = [10, 9, True, '张三']
print(10 in list1) # 输出结果:True
print(False not in list1) # 输出结果:True
列表的截取
- 语法:列表名[开始下标:结束下标:步长],表示按指定步长获取从开始下标到结束下标之间的元素
- 注意:
- 列表截取的结果:是一个新的列表
- [开始下标:结束下标):
- 包头不不包尾
- 如果其中一个下标为空,则默认为0或-1
- 步长:
- 默认是1,正数表示从左向右取,负数表示从右向左取
- 步长的取值方向应该与 [开始下标,结束下标) 一致
# 【练习案例】
list1 = [10,20,30,40,50,60]
print(list1[0:3]) #[10,20,30]
print(list1[:3]) #[10,20,30]
print(list1[:]) #[10,20,30,40,50,60] 从头取到尾
print(list1[::2]) # [10,30,50] 隔一个取一个
print(list1[3::-1]) #[40, 30, 20, 10] 从右向左取
print(list1[3:0:-1]) #[40, 30, 20] 从右向左取
print(list1[-1:-3:-1]) #[60, 50] 从右向左取
print(list1[2:]) #[30, 40, 50, 60] 从下标为2的元素开始取到末尾
print(list1[-3::-1]) #[40, 30, 20, 10] 从右向左取到第一个元素
列表长度
# 用函数len()来表示列表长度
[1, 2, 3, 4]
print(len(list1)) # 输出结果:4
列表的最大值、最小值、求和运算
print(max(list1))
print(min(list1))
print(sum(list1))
# 注意:
应用max\min函数时,列表中的所有元素应该是统一的数据类型(统一为数值类型或统一为字符串类型)
应用sum函数时,列表中所有元素必须都为数值类型
列表的操作
增加元素
list.append(obj)
在列表末尾添加新的对象
此处的对象obj可以是其他的列表、元组、字典、集合等
li = [10, 20, 30]
li.append(40) # [10, 20, 30, 40]
li.append([40, 50]) # [10, 20, 30,[40,50]],li 由一维列表变成二维列表
print(li)
list.extend(obj)
在列表末尾添加另一个列表中的元素
此处的对象obj不能是单个数值,必须是列表等可迭代对象
li = [10, 20, 30]
li.extend([50,80]) # [10, 20, 30, 50, 80]
li.extend(7) # 报错
li.extend([7]) # [10, 20, 30, 50, 80, 7]
print(li)
list.insert(i,obj)
在指定下标i的位置插一个新元素,且原来的元素后移,不会被覆盖
此处的对象obj可以是其他的列表、元组、字典、集合等
li = [10, 20, 30]
li.insert(1,[60, 70]) # [10, [60, 70], 20, 30]
print(li)
删除元素
list.pop(i)
删除指定下标的元素,如果下标越界,会出现IndexError
li = [10, 20, 30]
li.pop() # 删除最后一个元素
print(li)
li.pop(0) # 删除下标为0的元素
print(li)
li = [10, 20, 30]
value = li.pop() # 删除最后一个元素,并返回该元素的值
list.remove(x)
删除列表中第一个值等于x的元素,删除的时候是从左向右找到
l1 = [10, -20, 30]
l1.remove(-20)
print(l1)
list.clear()
清空列表