python学习day6
01 数字类型
python中的数字类型:int(整形)、float(浮点型)、bool(布尔)、complex(复数)
-
int 整型
所有整数对应的类型。(注意:在python2.x有long)
-
float(浮点型)
所有的小数对应的类型,支持科学计数法
print(3e4,4e-2)
-
bool(布尔)
只有True和False两个值,其他Ture本质就是数字1,False本质是数字0
print(1+1, True + 1, False + 1)
-
complex(复数)
包含实部和虚部的数就是复数,对应的数据类型是 complex
python 中表示复数的时候,虚数单位是 j,j 前面如果是1,1不能省
num1 = 10 + 2j num2 = 2 - 1j num3 = 20j
python支持复数运算
print(num1 + num2) print(num1 * num2)
-
数据类型转换
python中所有数据类型的转换方式:类型名(数据)
-
整型:int(数据)- 将指定的数据转换成10进制的整数
所有的数字类型对应的数据都可以转换成整型(复数不行),部分字符串也可以转换成整型
对于字符串来说,去掉引号以后本身是合法的制定进制的整数对应的字符串才能转换成对应的整型
print(int(12.5), int(-12.5)) print(int(True), int(False)) print(int('123')) print(int('+123'), int('-123')) print(in('123.45')) # 报错 print(int('abc')) # 报错 print(int('0b1101')) # 报错 # int(数据, 进制数) print(int('0b1101', 2)) print(int('1011', 2))
-
浮点型:float(数据)
整型和布尔都可以转换成浮点型,部分字符串也可以转换成浮点型
print(float(10)) print(float(True)) print(floar('100')) print(float('12.5')) print(float('12.2 + a')) #报错 print(float('3e4'))
-
布尔:bool(数据)
所有类型的所有数据都可以转换成布尔
所有零值或者空值会转换成False,其他都是True
-
02 列表基础
容器型数据类型:可以同时保存多个数据的数据。常见的容器型数据类型有:列表、 元组、字典、集合、字符串、迭代器、生成器。容器中每一个独立的数据叫元素
-
列表
列表是容器型数据类型,将[]作为容器的标志,里面的多个数据用逗号隔开。比如:[12, 2, 4]
列表是可变的(列表中的元素的个数和值可变);列表是有序的
-
列表中的元素:可以是任何类型的数据;不同元素的类型可以不一样
scores = [0, 88, 44, 31, 55] print(scores) list1 = [90, 12.3, True, 'abc', [1, 2, 4]] print(list1)
-
获取列表元素
-
获取单个元素
""" 语法: 列表[下标] 说明: 列表 - 任何结果是列表的表达式:独立的列表数据、保存列表的变量、返回值是列表的函数调用表达式、结果是列表的运算表达式 [] - 固定写法 下标 - 想要获取的元素对应的下标 补充:什么是下标 下标又叫索引,是用来表示有序序列中元素的位置(顺序)。 列表中的每一个元素都有一个唯一的并且固定的下标用来表示这个元素在列表中的位置,下标值的范围是从0开始依次增加,其中0表示第一个元素。。。 列表中的额每个元素有两种下标值,一种是正的下标值(从0开始),另一种是负的下标值(从-1开始,依次减少,-1是最后的一个元素) 注意: 下标不能越界 """ names = ['张飞', '刘备', '关羽'] print(names[1], names[-2]) print([1, 2, 3, 4][1])
-
获取部分元素 - 切片
""" 语法: 列表[开始下标:结束下标:步长] - 从开始下标开始,每次下标值增加步长,取到结束下标前为止 说明: 列表 - 任何结果是列表的表达式:独立的列表数据、保存列表的变量、返回值是列表的函数调用表达式、结果是列表的运算表达式 [] - 固定写法 开始下标、结束下标 - 下标值,整数 步长 - 整数 如果步长是正,表示获取元素的时候是从左往右取,保证开始下标对应的元素要在结束下标对应的元素的前面,否则切片的结果是[]; 如果步长是负,表示获取元素的时候是从后往前取,保证开始下标对应的元素要在结束下标对应的元素的后面,否则切片的结果是[]。 注意:切片的时候下标可以越界 """ nums = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(nums[1:4:1]) names = ['鲁班7号', '亚索', '妖姬', '盲僧', '狗头'] print(names[1:3:1]) print(names[-4:3:1]) print(names[1:-1:2]) print(names[-1:1:1]) #[] print(names[-1:0:-2]) print(names[2:5:1])
-
切片语法的省略写法
-
省略步长
列表[开始下标:结束下标] ----> 列表[开始下标:结束下标:1]
names = ['鲁班7号', '亚索', '妖姬', '盲僧', '狗头'] print(names[1:4]) print(name[-2:4])
-
省略开始下标
列表[:结束下标:步长] / 列表[:结束下标]
步长为正,表示从第一个元素开始往后取
步长为负,表示从最后一个元素开始往前取
-
省略结束下标
列表[开始下标::步长] / 列表[开始下标:]
步长为正,从前往后取到最后一个元素为止
步长为负,从后往前取到第一个元素为止
-
同时省略开始下标和结束下标
列表[::步长] / 列表[:]
步长为正,从第一个元素取到最后一个元素
步长为负,从最后一个元素取到第一个元素
-
-
遍历列表 - 将列表中的元素一个一个的取出来、
-
方法一:直接法
for 变量 in 列表:
循环体
-
方法二:通过下标间接获取
for 下标 in 下标对应的数字序列:
列表[下标]
循环体
-
练习1:用一个列表保存一个班所有的学生的分数,统计不及格学生的人数 scores = [90, 38, 78, 67, 14, 55, 70, 59] a = 0 for x in scores: if x < 60: a += 1 print(a) 练习2:用一个列表保存一个班所有的学生的分数,计算班级学生的平均分 scores = [90, 38, 78, 67, 14, 55, 70, 59] a = 0 for i in scores: a += index print(a/len(scores))
-
03 列表元素的增删改
-
增 —— 添加元素
-
append —— 追加
列表.append(元素) —— 在指定列表的最后添加指定的元素
list1 = [10, 20, 30] print(list1) list1.append(100) print(list1)
-
insert —— 插入
列表.insert(下标,元素) —— 在指定列表指定下标对应的元素前插入指定的元素
list1 = [10, 20, 30] list1.insert(1,100) print(list1)
练习:不断输入学生的成绩,并且把所有输入的成绩保存在一个列表中。(输入-1结束)
scores = [] while True: a = int(input('请输入成绩:', )) if a == -1: break scores.append(a) print(scores)
-
-
删 —— 删除元素
-
del 语句
del 列表[下标] —— 删除列表中指定下标对应的元素(下标不能越界)
teleplays = ['甄嬛传', '大明王朝', '琅琊榜', '庆余年', '还珠格格', '请回答1988'] del teleplays[2] print(teleplays) del teleplays[-4] print(teleplays)
-
remove
列表.remove(元素) —— 删除列表中指定的元素;如果元素不存在,会报错;果如元素有多个,只删前面的一个
teleplays = ['甄嬛传', '大明王朝', '琅琊榜', '庆余年', '还珠格格', '请回答1988', '甄嬛传'] teleplays.remove('甄嬛传') print(teleplays)
-
pop
列表.pop() —— 取出列表中的最后一个元素,并且返回被取出的元素
列表.pop(下标) —— 取出列表中指定下标的元素
teleplays = ['甄嬛传', '大明王朝', '琅琊榜', '庆余年', '还珠格格', '请回答1988', '甄嬛传'] t = teleplays.pop(1) print(teleplays) print(t) j = teleplays,pop() print(teleplays, j)
练习:已知一个分数列表:[89, 45, 55, 30, 78, 90, 34, 87, 100],删除列表中所有低于60分的成绩
scores = [89, 45, 55, 30, 78, 90, 34, 87, 10, 59, 100] a = scores[:] for score in a: if score < 60: scores.remove(score) print(scores)
-
-
改 —— 修改元素的值
-
列表[下标] = 新元素 —— 将列表中指定的下标对应的元素修改成新的元素
anime_list = ['火影忍者', '海贼王', '死神', '天线宝宝', '死亡笔记'] anime_list[-2] = '海绵宝宝' print(anime_list) 练习:将列表[89, 45, -55, 30, -78, 90, -34, 87, 10, 59, 100]中所有的负数改成0 list = [89, 45, -55, 30, -78, 90, -34, 87, 10, 59, 100] for x in range(len(list); if list[x] < 0: list[x] = 0 print(list)
-
列表1[开始下标:结束下标] = 列表2
nums = [10, 20, 30, 40, 50] nums[1:3] = [100, 200, 400] print(nums)
-
-
in 和 not in
元素 in 元素 —— 判断指定元素是否在指定列表中
元素 in not 列表 —— 判断指定元素是否不在指定列表中
print(10 in nums) print(20 not in nums)