一、循环中的else结构
1)循环结构
#语法:
"""
for 变量 in 序列:
循环体
else:
代码段
while 条件语句:
循环体
else:
代码段
"""
注意:else不影响循环的执行
#else 代码段执行的条件: 1、循环自然死亡 2、循环遇到break
二、列表
- 什么是列表
1)列表是容器型数据类型(是序列),将[]作为容器的标志,里面多个元素用逗号隔开。例如:[元素1,元素2,元素3,…]
2)特点:列表是可变的(支持增删改),列表是有序的(支持下标操作)
3)元素:列表对元素没有要求,可以是任何类型的数据
#空列表
list1 = []
print(list1) # []
#元素可以是任何类型的元素
list2 = [10, 23.4, True, 'abc', [10, 20]]
print(list2) # [10, 23.4, True, 'abc', [10, 20]]
#列表是有序的
print([1, 2, 3] == [3, 2, 1]) #False
三、如果获取列表元素
- 获取列表中单个元素
"""
语法:
列表[下标] - 获取列表中指定下标对应的元素
说明:
列表 - 可以是具体的一个列表值,也可以是保存列表的变量
[] - 固定写法
下标 - 又叫索引;下标是有序序列中元素的位置信息。
列表中的每个元素都有两组下标值,分别是从0开始依次增加的下标(其中0表示第一个)和从-1开始依次减小的下标值(-1表示倒数第一个)
"""
#可以是列表也可以是保存列表的变量
print([10, 20, 30][0]) # 10
list1 = [10, 20, 30]
print(list1[-1]) # 30
#下标不能超出范围
list2 = [10, 45, 60, 8]
print(list[4], list[-5]) # IndexError: list index out of range
-
获取列表中多个元素(切片)
1)切片的语法
"""
语法:
列表[开始下标:结束下标:步长]
第一步: 是否能够取到数据:如果开始到结束的方向和步长对应的方向(步长为正方向是从前往后,为负就是从后往前)一致就可以获取到元素,反之切片结果一定是[]
第二步:确定有效范围:[开始下标, 结束下标)
第三步:在有效范围内按照步长去获取元素
"""
#应用1
heroes=['亚索', '劫', '奈德丽', '卡特琳娜', '艾克', '艾瑞利亚']
print(heroes[1:-1:2]) # ['亚索', '奈德丽', '艾克']
print(heroes[-2:1:2]) # []
print(heroes[-1:0:-1]) # ['艾瑞利亚', '艾克', '卡特琳娜', '奈德丽', '劫']
print(heroes[-1:0:-2]) # ['艾瑞利亚', '卡特琳娜', '劫']
print(heroes[0:3:1]) # ['亚索', '劫', '奈德丽']
print(heroes[0:-2:3]) # ['亚索', '卡特琳娜']
print(heroes[-3:0:-1]) # ['卡特琳娜', '奈德丽', '劫']
2)切片语法参数的省略
"""
列表[开始下标:结束下标:步长]
a. 省略步长 - 相当于步长是1
列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]
b. 省略开始下标 - 如果步长为正就从第一个元素开始;如果步长为负就从最后一个元素开始
列表[:结束下标:步长]
列表[:结束下标]
c. 省略结束下标 - 步长为正取到最后一个元素为止;步长为负取到第一个元素为止
列表[开始下标::步长]
列表[开始下标:]
d. 一起省
列表[::步长]
列表[:] - 全取
"""
#应用
heroes = ['鲁班7号', '甄姬', '艾琳', '张飞', '孙膑', '蔡文姬']
# 省略步长
print(heroes[-1:2]) # []
print(heroes[2:-1]) # ['艾琳', '张飞', '孙膑']
# 省略开始下标
print(heroes[:-2:1]) # ['鲁班7号', '甄姬', '艾琳', '张飞']
print(heroes[:-2:-1]) # ['蔡文姬']
# 省略结束下标
print(heroes[1:]) # ['甄姬', '艾琳', '张飞', '孙膑', '蔡文姬']
print(heroes[-2::-2]) # ['孙膑', '艾琳', '鲁班7号']
#一起省略
print(heroes[::-2]) # ['蔡文姬', '张飞', '甄姬']
print(heroes[::2]) # ['鲁班7号', '艾琳', '孙膑']
print(heroes[:]) # ['鲁班7号', '甄姬', '艾琳', '张飞', '孙膑', '蔡文姬']
- 遍历列表
"""
方法一:直接遍历列表,获取元素
for 元素 in 列表:
循环体
方法二:通过遍历获取每个元素的下标,然后再通过下标获取元素
for 下标 in range(len(列表)):
循环体
for 下标 in range(-1, -len(列表)-1, -1):
循环体
"""
四、列表的增删改
- 列表的增加 - 添加元素
"""
1)列表.append(元素) - 在列表的最后添加指定元素
2)列表.insert(下标, 元素) - 在指定下标对应的元素前插入指定元素
"""
#应用1
scores = [100, 90]
print(scores) # [100, 90]
scores.append(70)
print(scores) # [100, 90, 70]
scores.insert(-1, 80)
print(scores) # [100, 90, 80, 70]
- 删除 - 删除列表中的指定元素
"""
1) del 列表[下标] - 删除列表中指定下标对应的元素(下标越界会报错)
2) 列表.remove(元素) - 删除列表中指定的元素(元素不存会报错;如果元素有多个,只删最前面的那一个)
3)
列表.pop() - 取出列表中最后一个元素,并且返回
列表.pop(下标) - 取出列表中指定下标对应的元素,并且返回
"""
#应用
heroes = ['奈德丽', '卡特琳娜', '亚索', '艾克']
del heroes[-1]
print(heroes) # ['奈德丽', '卡特琳娜', '亚索']
heroes.remove('亚索')
print(heroes) # ['奈德丽', '卡特琳娜']
heroe_name = heroes.pop(0)
print(heroes, heroe_name) # ['卡特琳娜'] 奈德丽
- 改 - 修改列表中元素的值
"""
列表[下标] = 值 - 将列表指定下标对应的元素修改成指定的值
"""
#应用
heroes = ['亚索', '劫', '艾克']
print(heroes) #['亚索', '劫', '艾克']
heroes[0] = '卡特琳娜'
print(heroes) #['卡特琳娜', '劫', '艾克']