1)列表是容器型数据类型(可以同时保存多个数据);
2)将[]作为容器的标志,里面多个元素(一个容器中每个独立的数据就是元素)用逗号隔开: [元素1, 元素2, 元素3,…]
3)列表是可变的(可变指的是元素的个数、元素的值和元素的顺序可变) - 列表支持增删改
列表是有序的 - 列表支持下标操作
4)列表的元素:任何类型的数据都可以作为列表的元素
1. 空列表list1 = [] print(list1)2.列表中的元素的类型
- 同一个列表中中的元素的类型可以相同,可以不同也可以嵌套
list2 = [29, 34, 56, 67]
print(list2)
list3 = [29, 2.3, 'abc', True, [10, 2], {'a': 10}]
print(list3)
list4 = [10, [20, 30]]
print(list4)
- 列表是有序的
print([10, 20, 30] == [10, 30, 20]) # False3.获取单个元素
语法: 列表[下标] - 获取指定列表中指定下标对应的元素
说明:
1)列表 - 可以是具体某个列表,也可以是保存列表的变量
2)[] - 固定写法
3)下标 - 整数,下标又叫索引,是元素在有序序列中的位置信息。
python中元素对应的下标有两种:1.从前往后从0开始不断增加 2.从后往前从-1开始不断减小
注意:下标不能越界
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生'] print(games[1], games[-6]) print(['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生'][1]) print(games[-1]) # 注意:下标不能越界 # print(games[100]) # IndexError: list index out of range4.获取部分元素 - 切片
1)完整语法:
列表[开始下标:结束下标:步长]
2)获取切片结果过程:
第一步:确定结果是否为空:看步长对应的方向和开始下标到结束下标对应的方向是否一致,如果不一致,切片的结果一定是空
第二步:确定有效范围:从开始下标对应的元素到结束下标对应的元素就是有效范围,有效范围内,结束下标对应的元素取不到
[开始下标, 结束下标)
第三步:获取元素:步长的正负确定获取方向; 步长绝对值确定获取的时候是否跳着取;
如果绝对值为1,表示一个一个的取;绝对值为2,表示取一个跳过一个;绝对值为3,表示取一个跳过2个
3)写切片表达式获取指定的结果
第一步:确定开始下标:看结果中第一个元素在原列表中的下标
第二步:确定步长:看获取元素的方向来确定正负; 看取值的时候跳过的情况确定绝对值
第三步:确定结束下标:[开始下标, 结束下标)对应的范围能够包含所有的已经获取到的元素
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生'] print(games[1:-1:2]) # ['王者荣耀', '炉石传说', '原神'] print(games[1:-2:-2]) # [] print(games[4:0:1]) # [] print(games[2:-2:1]) # ['开心消消乐', '炉石传说', '部落冲突'] print(games[6:-6:-2]) # ['绝地求生', '部落冲突', '开心消消乐']
4)切片省略写法
-
省略步长: 列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]
省略步长的时候,步长为1 -
省略开始下标: 列表[:结束下标:步长]、列表[:结束下标]
如果步长为正,从第一个元素开始往后取;如果步长为负,从最后一个开始往前取 -
省略结束下标:列表[开始下标::步长]、列表[开始下标:]
如果步长为正,从开始下标开始往后取,一直取到最后一个元素;如果步长为负,从开始下标开始往前取,取到第一个元素为止
movies = ['肖申克的救赎', '双城之战', '你的名字', '海上钢琴师', '风雨哈佛路', '当幸福来敲门', '乡村老尸', '咒怨'] # 省略步长 print(movies[2:5]) # ['你的名字', '海上钢琴师', '风雨哈佛路'] print(movies[1:-2]) # ['双城之战', '你的名字', '海上钢琴师', '风雨哈佛路', '当幸福来敲门'] print(movies[-2:2]) # [] # 省略开始下标 print(movies[:3]) # ['肖申克的救赎', '双城之战', '你的名字'] print(movies[:3:-1]) # ['咒怨', '乡村老尸', '当幸福来敲门', '风雨哈佛路'] print(movies[:-2:-2]) # ['咒怨'] # 省略结束下标 print(movies[2:]) # ['你的名字', '海上钢琴师', '风雨哈佛路', '当幸福来敲门', '乡村老尸', '咒怨'] print(movies[3::2]) # ['海上钢琴师', '当幸福来敲门', '咒怨'] print(movies[3::-2]) # ['海上钢琴师', '双城之战'] print(movies[::2]) print(movies[::-2])5.遍历列表
将列表中的元素一个一个的全部取完
方法1 - 直接获取元素
for 元素 in 列表:
循环体(变量依次取到的就是列表中的元素)
方法2 - 通过遍历下标来遍历元素
for 下标 in range(len(列表)):
循环体(变量取到的是每个元素的下标, 列表[下标]就可以获取到元素)
方法3 - 同时获取下标和元素
for 下标,元素 in enumerate(列表):
循环体(变量1依次获取到的是每个元素的下标,变量2依次获取到的时候每个元素)
print('----------------------------------------华丽的分割线-----------------------------------')
movies = ['肖申克的救赎', '双城之战', '你的名字', '海上钢琴师', '风雨哈佛路', '当幸福来敲门', '乡村老尸', '咒怨']
for x in movies:
print(x)
print('----------------------------------------华丽的分割线-----------------------------------')
nums = [28, 73, 55, 60, 98, 21]
# 练习1:求nums中所有元素的和
s = 0
for x in nums:
s += x
print(s)
print('----------------------------------------华丽的分割线-----------------------------------')
# 练习2:统计nums中奇数的个数
count = 0
for x in nums:
if x % 2:
count += 1
print(count)
print('----------------------------------------遍历下标-----------------------------------')
movies = ['肖申克的救赎', '双城之战', '你的名字', '海上钢琴师', '风雨哈佛路', '当幸福来敲门', '乡村老尸', '咒怨']
for index in range(len(movies)):
print(index, movies[index])
print('----------------------------------------华丽的分割线-----------------------------------')
# range(M,N,step) - [M, N), 步长为step
# range(8-1, -1, -1) -> range(7, -8, -1)
# (7, 6, 5, 4, 3, 2, 1, 0), -1
for index in range(len(movies)-1, -1, -1):
print(index, movies[index])
print('----------------------------------------华丽的分割线-----------------------------------')
# (-1, -2, -3, -4, -5, -6, -7, -8), -9
for index in range(-1, -len(movies)-1, -1):
print(index, movies[index])
print('----------------------------------------同时遍历下标和元素-----------------------------------')
movies = ['肖申克的救赎', '双城之战', '你的名字', '海上钢琴师', '风雨哈佛路', '当幸福来敲门', '乡村老尸', '咒怨']
for index, item in enumerate(movies):
print(index, item)
6.新增
- 列表.append(元素) - 在列表的最后添加指定元素
- 列表.insert(下标, 元素) - 在列表中指定下标对应的元素前插入指定元素
nums = [10, 20] print(nums) nums.append(100) print(nums) # [10, 20, 100] nums.append(200) print(nums) # [10, 20, 100, 200] nums = [10, 20] nums.append([100, 200]) print(nums) # [10, 20, [100, 200]] nums = [10, 20, 30] print(nums) # [10, 20, 30] nums.insert(1, 100) print(nums) # [10, 100, 20, 30] nums.insert(0, 200) print(nums) # [200, 10, 100, 20, 30] nums.insert(len(nums), 300) print(nums)7.删除
del 列表[下标] - 删除列表中指定下标对应的元素
列表.remove(元素) - 删除列表中指定元素
列表.pop() - 取出列表中最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素
示例:
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
del games[2]
print(games) # ['英雄联盟', '王者荣耀', '炉石传说', '部落冲突', '原神', '绝地求生']
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
del games[-1]
print(games) # ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神']
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
games.remove('开心消消乐')
print(games) # ['英雄联盟', '王者荣耀', '炉石传说', '部落冲突', '原神', '绝地求生']
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '开心消消乐', '原神', '绝地求生', '开心消消乐']
games.remove('开心消消乐')
print(games) # ['英雄联盟', '王者荣耀', '炉石传说', '部落冲突', '开心消消乐', '原神', '绝地求生', '开心消消乐']
# games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
# games.remove('红警')
# print(games) # ValueError: list.remove(x): x not in list
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
x = games.pop()
print(games, x) # ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神'] 绝地求生
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
x = games.pop(1)
print(games, x) # ['英雄联盟', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生'] 王者荣耀
# 遍历删除元素
# 两种均可:(-长度 ~ 0)、(len-1 ~ -1),原则是删了一个后下一个的下标不变(方向相反)
# -6, -5, -4, -3, -2, -1
scores = [98, 79, 45, 55, 72, 64]
for index in range(-len(scores), 0, 1):
if scores[index] < 60:
del scores[index]
print(scores) # [98, 79, 72, 64]
# 5, 4, 3, 2, 1, 0
scores = [98, 79, 45, 55, 72, 64]
for index in range(len(scores)-1, -1, -1):
if scores[index] < 60:
del scores[index]
print(scores) # [98, 79, 72, 64]
8.改
列表[下标] = 新值 - 将列表中指定下标对应的元素修改成指定的值
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生'] games[1] = '红色警戒' print(games) # ['英雄联盟', '红色警戒', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']9. in和not in
元素 in 列表 - 判断列表中是否存在指定元素,如果存在就返回True,否则返回False
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
print('绝地求生' in games) # True
print('红色警戒' in games) # False
print(10 in [10, 20, 30]) # True
print([10, 20] in [10, 20, 30]) # False
print([10, 20] in [[10, 20], 30]) # True



