day6 列表
——— review
- while
while 条件语句:
循环体
while True:
循环体
if 循环结束的条件:
break
- break、continue
- continue - 结束一次循环
- break - 结束整个循环
案例:
#猜数字游戏解法:
from random import randint
#random (随机模块) ;
#randint(M,N) - 产生M到N的随机整数;
number = randint(0,100)
count=0
while True:
#提示用户输入数据
value=int(input('请输入你猜的数字(0~100):'))
count +=1
#判断输入的数据和产生的随机数之间的大小关系;
#if 循环结束条件:
if value > number:
print('大了,再小点儿')
elif value < number:
print('小了,再大点儿')
#else:
#break
else:
print('恭喜你,答对了!')
break
if count>=7:
print('对不起,你的次数用完了,游戏结束!')
break
-
循环的else
1)完成的for循环语法:
for 变量 in 序列:
循环体
else:
代码段
2)完整的while循环语法:
while 条件语句:
循环体
else:
代码段
注释:else的存在并不会影响原来的循环的执行:
如果循环自然死亡,循环结束后会执行else后面的代码段;
如果循环是因为遇到break而结束的,那么else后面的代码就不会执行。
01 认识列表
1)什么是列表(list)
- 列表是python中的容器型数据类型;
- 列表是将 [ ] 作为容器的标志,里面多个数据用逗号隔开:[][][][][][][数据1,数据2,数据3…数据N];
- 列表是可变的(元素的个数、元素的值和顺序都可以改变 - 支持增、删、改);
- 列表是有序的(支持下标操作);
- 补充:
- 元素 - 容器中每一个独立的数据就是这个容器中的每个元素:如数据1;
- len ( lenth列表 ) - 获取列表中元素的个数;
空列表:列表中一个数据都没有
list1=[]
print(type(list1),len(list1),list1) # <class 'list'> 0 []
任何类型的数据都可以是列表的元素,同一个列表中的元素的类型可以不相同
# 1
list1 = [100]
list2 = [98, 34, 89, 99, 56, 100, 91, 10]
list4 = ['小米', 81, False, 78.9, 'AB']
# 求列表个数
list5 = [10,[20,30]]
print(len(list5)) # 2
02 查操作
1)查 - 获取元素
1. 查单个 - 获取列表中的一个元素
1)语法:
列表[下标] - 获取列表中指定下标对应的元素
2)说明:
-
列表 :任何结果是列表的表达式,一般是保存列表的变量或者具体的
-
[ ]: 固定写法
-
下标(索引):
- 下标又叫索引,下标就是列表中元素的位置信息;
- 列表中的每个元素都有两个下标值,分别是:从前往后是 0,1,2, ,3… , 从后往前是 -1,-2,-3,-4 …
- 注意:这里的下标不能越界
案例:
movies=['电影1','电影2','电影3','电影4','电影5','电影6','电影7',]
print(movies[0],movies[-3],movies[-1])
# 打印结果:电影1 电影5 电影7
print(movies[7])
# 报错,因为列表中没有下标值为7的数据
2. 遍历 - 一个一个的将列表中的元素全部取一遍
方法1 :
语法: for 变量(元素) in 列表:
循环体
案例:
movies=['电影1','电影2','电影3','电影4','电影5','电影6','电影7',]
for x in movies:
print('x',x)
# 打印结果:x 电影1 x 电影2 x 电影3 x 电影4 x 电影5 x 电影6x 电影7
练习1:打印scores中所有不及格的分数
scores = [78, 19, 80, 92, 99, 45, 67, 87, 49]
for x in scores:
if x<60:
print(x)
# 打印结果:19,45,49
练习2:统计scores中及格的分数的人数
scores = [78, 19, 80, 92, 99, 45, 67, 87, 49]
count=0
for x in scores:
if x>=60:
count += 1
print('及格人数:',count)
# 打印结果:及格人数:6
方法2 - 通过遍历下标来遍历列表 xxxxxxx
for 下标 in range(len(列表)):
循环体
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
# 取出全部的值
# 下标1:0 1 2 3 4 5 6
for x in range(len(movies)):
print(x,movies[x])
# 下标2:-1 -2 -3 -4 -5 -6 -7
for x in range(-1,-len(movies)-1,-1):
print(x,movies[x])
# 下标3:6 5 4 3 2 1 0
for x in range(len(movies)-1,-1,-1):
print(x,movies[x])
方法3
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
for x,y in enumerate(movies):
print(x,y)
# 0 小森林 1 复联3 2 肖生克的救赎 3 蜘蛛侠 4 忍者神龟 5 泰坦尼克号 6 阿凡达
3.切片 - 在一个列表中获取部分元素
1)完整语法
列表[ 开始下标:结束下标:步长]
- 开始下标、结束下标:
- 用来确定切片的有效范围;
- 开始下标对应的元素能取到,结束下标对应的元素取不到。
- 步长( 确定获取方式):
- 步长为正,从前往后取,步长为负,从后往前取;
- 绝对值的大小决定是一个一个取还是跳着取。
a. 怎么看切片结果
-
step 1 :先确定结果是否为空(看从开始下标到结束下标对应的方向和步长对应的方向是否一致,如果不一致,为空);
-
step 2 :确定有效范围(开始下标对应的元素能取到,结束下标对应的元素取不到);
-
step 3 :根据步长在有效范围内获取元素:
-
绝对值为1:一个一个的取
-
绝对值为2:取1个跳1个再取1个
-
绝对值为3:取1个跳2个再取1个
…
-
绝对值为N,取1个跳N-1再取1个
案例:
games = ['英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '阴阳师', '刀塔', '原神', '绝地求生'] print(games[1:-3:-2]) # 空 print(games[-4:-1:-1]) # 空 print(games[-6:0:2]) # 空 print(games[-7:-2:3]) # 开心消消乐 阴阳师 print(games[2:8:3]) # 开心消消乐 阴阳师 print(games[3:-1:-2]) # 空
-
b. 通过目标来写切片
- step 1 :确定开始下标:(将目标数据中第一个元素对应的下标作为开始下标)
- step 2 :确定步长:
- 根据获取元素的方向确定正负;
- 根据取的时候跳过的方式确定绝对值;
- step 3 : 确定结束下标N:
- 如果步长为正,结束下标是最后一个元素的后一个元素的下标。
- 如果步长为负,结束下标是最后一个元素的前一个元素的下标。
案例:
movies = ['小森林', '复联3', '肖生克的救赎', '蜘蛛侠', '忍者神龟', '泰坦尼克号', '阿凡达']
# 取出['复联3','蜘蛛侠','泰坦尼克号']
2)省略语法
列表[开始下标:结束 下标:步长]
-
a. 省略步长:列表[开始下标:结束下标] - 相当于步长为1
-
b. 省略开始下标:列表[ : 结束下标 : 步长] - 表示从头开始(头有可能是从前(下标0)开始,也可能是从后(下标-1)开始)
-
c. 省略结束下标:列表[开始下标 : : 步长] - 从开始的位置开始,一直取完
03 列表的增、删、改
1. 增 - 在列表添加元素
1) 列表. append( 元素 ) - 在指定列表的最后添加指定元素
# 案例1:
list1= [10,20]
print(list1) # [10, 20]
list1.append(30)
print(list1) # [10, 20, 30]
# 案例2:
# 获取scores中所有不及格的分数,以列表的形式返回
scores = [78, 19, 80, 92, 99, 45, 67, 87, 49]
new_scores=[] #建立一个新的空列表
for x in scores :
if x <60:
new_scores.append(x) #当有一个不及格分数出现,就在新列表中加一个
print(new_scores)
#[19, 45, 49]
2) 列表,insert( 下标,元素 ) - 将指定的元素插入到原列表指定下标的元素前面
nums=[10,50,100]
print(nums) # [10, 50, 100]
nums.insert(1,60)
print(nums) # [10, 60, 50, 100]
2. 删 - 删除元素
1)del 列表[ 下标 ] - 删除指定下标对应的元素(下标不能越界)
2)列表.remove( 元素 ) - 删除指定元素 (如果对应的元素有多个,只会删除最前面的一个; 如果元素不存在,会报错。)
nums=[10,50,100]
del nums[1]
print(nums) # [10, 100]
nums=[10,50,50,100]
nums.remove(50)
print(nums) # [10, 50, 100]
3)列表.pop( ) - 取出列表最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素
注意:取出表示从列表中取出,但是还在内存中,和删除不一样。取出的元素也可以用一个变量保存,用于返回。
nums=[10,20,30,40,50]
nums.pop()
print(nums) # [10, 20, 30, 40]
nums=[10,20,30,40,50]
nums.pop(-2)
print(nums) # [10, 20, 30, 50]
x=nums.pop(-2)
print(nums.pop(-2)) # 20
3. 改 - 修改某个元素的值
列表[ 下标 ] = 值 - 将指定下标对应的元素修改成指定的值
nums=[10,20,30,40,50]
nums[-2] = 5
print(nums) # [10, 20, 30, 5, 50]