一、数字类型
python中数字相关的类型有4种:int(整型)、float(浮点型)、complex(复数)、bool(布尔型)
1.int 型
所有整数对应的类型
num = 23
num2 = 0b1001010 # 在数字前加0b表示二进制数(二进制数只能由0和1两个基数)
num8 = 0o76 # 在数字前加0o表示八进制数(八进制数的基数:0-7)
num16 = 0x3f # 在数字前加0x表示十六进制数(十六进制数的基数:0-9,A-F)
进制转换
print(其他进制数) - 查看对应的十进制数
print(num16)
print(bin(10)) # 查看二进制数
print(oct(89)) # 查看八进制数
print(hex(89)) # 查看十六进制数
int的类型转换 : int(数据)
print(int(2.34)) # 2
print(int(1.999)) # 1
print(int(-2.4)) # -2 浮点数转化成整数的时候只是单纯的去除小数点保留整数
# print(int(10+3j)) 复数不能转化为整型
print(int(True)) # 1
print(int(False)) # 0
# print(int('abc')) #
print(int('34'))
print(int('0b110', base=2)) # 6(base控制的是进制,默认10)
2. float(浮点型)
所有小数对应的类型
f1 = 12.4
f2 = 3e4
类型转换
print(float(19)) # 19.0
# print(float(3+4j)) # TypeError: can't convert complex to float
print(float(True)) # 1.0
# print(float('abc')) # ValueError: could not convert string to float: 'abc'
print(float('2.4')) # 2.4
print(float('2')) # 2.0
3.complex(复数)
把实部和虚部组合起来的数字就是复数(虚部单位为j)
c1 = 10-2j
c2 = 3j
c3 = 3 + 1j
# c3 = 3+j # (虚部值如果是1,1不能省略)
python中的复数值支持复数的数学运算
print(c1 + c3) # (13-1j)
print(c1 * c3) # (32+4j)
4. bool(布尔值)
只有True和False,True本质是1,False本质是0。
类型转换:
所有类型的数据都可以转换为布尔,所有的0值和空值会转换成False,其他都是True。
二、列表基础
1. 什么是列表
列表是容器型数据类型,以[]作为容器的标志,里面多个元素用逗号隔开。
列表是可变的(元素的值、个数、顺序都可以改变),列表是有序的。
列表的元素可以是任何类型的数据;同一个列表可以有多个类型不同的元素。
list1 = [34, 'abc', True, 34]
2.获取列表元素
2.1获取单个元素
语法:
列表[下标] :获取列表中指定下标的值
说明:
列表 : 任何结果是列表的表达式(比如:具体的列表值、保存列表的变量、运算结果是列表的列表表达式、返回值是列表的函数表达式)
[] : 固定写法
下标 :下标又叫索引;元素在有序序列中的位置信息
python中下标值有两种:
1)0~长度-1,其中0是第一个元素的位置,1是第二个,以此类推
2)-1~-长度,其中-1是最后一个元素的位置,-2是倒数第二个元素的位置,以此类推。
scores = [90, 78, 59, 76, 84]
print(scores[-1])
注意:获取单个元素的时候下标不能越界
2.2 遍历列表
将列表中的元素一个一个取出来
方法一:
直接获取列表中的元素
语法:
for 变量 in 列表:
循环体
for item in scores:
print(item)
方法二:
同时获取每个元素的下标和值
语法:
for 下标,元素 in enumerate(列表):
循环体
for x, y in enumerate(scores):
print(x, y)
练习1:求一个班所有学生的总成绩
scores = [90, 78, 59, 76, 84, 30, 99, 45]
total = 0
for score in scores:
total += score
print(total)
print('总成绩:', total, '平均分:', total/len(scores))
练习2:统计班上不及格学生的人数
scores = [90, 78, 59, 76, 84, 30, 99, 45]
count = 0
for score in scores:
if score < 60:
count += 1
print(count)
2.3 获取部分元素(切片)
列表切片的列表还是列表
语法:
列表[开始下标:结束下标:步长]
从开始下标开始取,每次下标值增加步长取下一个值,到结束下标前为止
如果步长为正:表示开始下表到结束下标是从前往后取,开始下标对应位置要在结束下标前
如果步长为负:表示开始下标到结束下标是从从后往前,开始下标对应位置要在结束下标后
names = ['赵云', '诸葛亮', '刘备', '貂蝉', '甄姬']
print(names[1:4:1]) # ['诸葛亮', '刘备', '貂蝉']
print(names[1:4:-1]) # []
print(names[1:4:2]) # ['诸葛亮', '貂蝉']
print(names[-1:1:-1]) # ['甄姬', '貂蝉', '刘备']
print(names[0:-1:1]) # ['赵云', '诸葛亮', '刘备', '貂蝉']
print(names[0:-1:3]) # ['赵云', '貂蝉']
1)省略步长
列表[开始下标:结束下标] :省略步长相当于步长为1
movies = ['僵尸世界大战', '电锯惊魂', '致命弯道', '死神来了', '生化危机', '林中小屋']
print(movies[1:-1]) # ['电锯惊魂', '致命弯道', '死神来了', '生化危机']
print(movies[5:2]) # ['生化危机', '死神来了', '致命弯道']
2)省略开始下标
列表[结束下标:步长] / 列表[:结束下标]
步长为正,表示从第一个元素开始往后取。
步长为负,表示从最后一个元素开始往前取。
print(movies[:5:2]) # ['僵尸世界大战', '致命弯道', '生化危机']
print(movies[:-2]) # ['僵尸世界大战', '电锯惊魂', '致命弯道', '死神来了']
print(movies[:-3:-1]) # ['林中小屋', '生化危机']
print(movies[:-1:-1]) # []
3)省略结束下标
列表[开始下标::步长] / 列表[开始下标:]
步长为正,从前往后取到最后一个元素为止
步长为负,从后往前取到第一个元素为止
tv_list = ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[2:]) # ['名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[-3::-1]) # ['三国演义', '西游记', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']
4)开始下标和结束下标都省
列表[::步长] / 列表[:]
如果步长为正,从前往后取到最后一个;
如果步长为负,从后往前取到第一个。
print(tv_list[:]) # ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[::-1]) # ['尼基塔', '生活大爆炸', '三国演义', '西游记', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']
print(tv_list[::-2]) # ['尼基塔', '三国演义', '名侦探狄仁杰', '甄嬛传']