列表及其增删改查
- 1 什么是列表?
- 2 列表的查操作
- 1. 查单个元素
- 2. 切片
- 3. 遍历
- 3 列表的增删改操作
- 1. 增 添加元素
- 2. 删 删除元素
- 3. 改 修改元素的值
列表在需要同时处理多个数据的时候非常有用。
1 什么是列表?
- 列表是容器型数据类型,将[]作为容器的标志,里面多个元素用逗号隔开。
🌸[数据1,数据2,数据3,...]
- 特点
1)列表是可变的(可变指的是容器中元素的个数和值可变,即支持增删改)
2)列表是有序的(支持下标操作、索引操作) - 元素没有要求
任何类型的数据都可以作为列表的数据,同一个列表中的元素的类型还可以不一样。
- 1) 空列表:列表里面一个元素都没有的时候。
list=[]
list=[ ]
list=''
2) 列表中的元素可以是任何类型的数据。
list1=[10,9.29,False,None,'abc',[1,2,3]]
3)列表是有序的(顺序影响结果)。
print([1,2,3]==[1,3,2]) #False
print({1,2,3}=={1,3,2}) #True(集合无序)
2 列表的查操作
1. 查单个元素
即一次获取一个元素。
🌸语法:
列表[下标] 获取指定列表中指定下标对应的元素
结构说明:
结构 | 说明 |
列表 | 需要获取元素的列表(可以是任何结果是列表的表达式,比如:保存列表的变量、具体的列表数据等) |
[] | 固定写法 |
下标 | 下标又叫索引,是列表中元素在列表中的位置信息。列表中的每个元素都有两个索引值,一个是从前往后,从0(第一个)开始不断增加的;另一个是从后往前,从-1(最后一个)开始不断减小。 |
下标不能越界。
🌰
nums=[100,99,98]
print(nums[0],nums[-3]) #100 100
2. 切片
一次获取多个元素(一次有规律的获取多个元素)。
🌸语法:
列表[开始下标:结束下标:步长] 根据下标和步长获取指定列表中的部分元素
1)怎么确定切片结果
步骤:
🥇第一步:确定结果是否为空列表(看从开始下标到结束下标的方向和步长对应的方式是否一致,如果方向一致结果一定不为空,反之结果肯定是空)
步长为正:表示从前往后取
步长为负:表示从后往前取
🥈第二步:确定有效范围(开始下标对应的元素取得到,结束下标对应的元素取不到)。
🥉第三步:在有效范围内,按照步长的绝对值确定获取内容。
如果绝对值为1,在有效范围内一个一个按顺序获取。
如果绝对值是2,在有效范围内,取一个跳1个再取一个。
如果绝对值是3,在有效范围内,取一个跳2个再取一个。
…
🌰
heroes = ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
print(heroes[1:4:1])
print(heroes[1:4:1])
2)怎么写切片
🥇第一步:确定开始下标(目标对应的第一个元素对应的下标)。
🥈第二步:确定步长。
确定正负号:看目标元素在原列表中的顺序是从前往后(+)还是从后往前(-)。
确定绝对值。
🥉第三步:确定结束下标。
3)切片的省略写法
正常写法:列表[开始下标:结束下标:步长]
a.省略步长 相当于步长为1
列表[开始下标:结束下标]
🌰
print(heroes[1:4])
print(heroes[-1:4]) #[]
b.省略开始下标 表示从头开始(看步长的正负,开始下标在第一个或者最后一个)
列表[:结束下标:步长]、列表[:结束下标]
🌰
print(heroes[:4:2]) #['王昭君','李白']
print(heroes[:4:-2]) #['妲己','诸葛亮','澜']
print(heroes[:-4]) #['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜']
c.省略结束下标 如果步长为正就从开始下标开始一直取到最后一个元素;如果步长为负就从开始下标开始一直取到第一个元素
列表[开始下标::步长]
🌰
print(heroes[1::2]) #['孙斌','百里守约','澜','诸葛亮',妲己']
print(heroes[-3::-1]) #['诸葛亮', '孙悟空', '澜', '墨子', '百里守约', '李白', '孙斌', '王昭君']
print(heroes[::-3]) #['妲己','孙悟空','百里守约','王昭君']
print(heroes[:]) #['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
3. 遍历
一个一个的获取列表中所有的元素
1)方法1 循环体中的变量直接是列表的元素
for 变量 in 列表:
循环体
🌰
games=['王者荣耀','开心消消乐','植物大战僵尸']
for i in games:
print(i)
2)方法2 通过下标来遍历列表
循环体变量获取到的是每个元素的下标,然后需要通过:列表[下标]再获取元素
for 变量 in range(len(列表)):
循环体
🌰
for i in range(len(games)):
print(i,games[i])
3)方法3:同时获取下标和元素
for 变量1,变量2 in enumerate(列表)
循环中变量1是每个元素的下标值。
🌰
for i item in enumerate(games):
print(i,item)
🌰练习1:计算nums中所有元素的和
nums = [12, 45, 8.34, 56, 23]
sum = 0
for i in nums:
sum += i
print(sum)
结果:
144.34
🌰练习2:统计nums中所有偶数的个数
nums = [23, 88, 90, 88, 67, 55, 11]
count = 0
for i in nums:
if i % 2 == 0:
count += 1
print(count)
结果:
3
🌰练习3: 统计list1中字符串的个数
list1 = [109, 23.4, True, 'abc', 'helo', 23, '12', False, None]
count = 0
for i in range(len(list1)):
if type(list1[i]) == str:
count += 1
print(count)
结果:
3
3 列表的增删改操作
1. 增 添加元素
1)列表.append(元素) 在列表的最后添加指定元素
nums=[1,2,3]
print(nums) #[1,2,3]
nums.append(4)
print(nums) #[1,2,3,4]
2)列表.insert(下标,数据) 在列表指定下标对应元素前插入指定数据
nums=[1,2,3]
print(nums) #[1,2,3]
nums.insert(2,4)
print(nums) #[1,2,4,3]
nums.insert(-1,4)
print(nums) #[1,2,4,3]
🌰练习:使用一个新的列表提取nums中所有的偶数
nums = [17, 89, 90, 81, 84, 4, 56]
# [90, 84, 4, 56]
num = []
for i in nums:
if i % 2 == 0:
num.append(i)
print(num)
2. 删 删除元素
1)del 列表[下标] 删除列表中指定下标对应的元素
games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
del games[2]
print(games)
2)列表.remove(元素) 删除列表中指定元素(元素不存在会报错;如果有多个相同的元素,只会删除第一个)
games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
games.remove('植物大战僵尸')
print(games)
3)列表.pop()
- 列表.pop() 取出列表最后一个元素
列表.pop(下标) 取出列表指定下标对应的元素
3. 改 修改元素的值
表[下标]=新元素 修改列表中指定下标对应的元素为新的元素