一、数字类型
python中数字相关的类型有4种:int、float、complex、bool
1. int(整数) - 所有整数对应的类型
num = 23
num2 = 0b10101 #在数据前加0b表示二进制数(二进制数中只能有0和1 两个数)
num8 = 0o76 #在数据前加0o表示八进制数(八进制数中只能0~7)
num16 = 0x3f #在数据前加0x表示十六进制数(十六进制数中只能0~f)
print(num16,type(num16))
进制转换
print(num8) #print(其他进制数) - 查看对应的十进制数
print(bin(89)) # bin()转换成二进制
print(oct(89)) # oct()转换成八进制
print(hex(89)) # hex()转换成十六进制
int的类型转换:int(数据)
print(int(2.23)) # 2
print(int(5.33)) # 5
print(int(-5.3)) # -5 浮点数转换成整数的时候只是单纯的保存整数部分
# print(int(10+3j)) # can't convert complex to int(附属不能转换成int类型)
print(int(True)) #1
print(int(False)) #0
print(int('-123')) #-123
# print(int('0b110')) #invalid literal for int() with base 10: '0b110'
print(int('0b110',base = 2)) # 6 (base的值控制的是进制,默认为10)
2. float(浮点型) - 所有小数对应的类型
f1 = 12.4
f2 = 3e4
类型转换
print(float(46)) # 46.0
# print(float(3+4j)) #can't convert complex to float
print(float(True)) # 1.0
print(float('12.2')) # 12.2
3. complex(复数) - 由实部和虚部组成的数字就是复数(虚数单位是j)
c1 = 10-2j
print(type(c1)) # <class 'complex'>
c2 = -3j # (如果实部是0可以省)
# c3 = 1+j #name 'j' is not defined (虚部值如果是1,1不能省略)
c3 = 3+1j
print(1j * 1j) #(-1+0j)
python中的复数直接支持复数的数学运算
print(c1 + c3) # (-1+0j)
print(c1 * c3) # (32+4j)
print(c1 / c3) # (2.8000000000000003-1.5999999999999999j)
4. bool(布尔) - 只有True和False两个值
True本质就是1,False就是0
类型转换 (所有类型的数据都可以转换成布尔)
所有的0值和空值都会转换成False,其他都是True
num = 0
if num == 0:
print('num为0')
if not num:
print('num为0')
二、列表
1. 什么是列表
列表是容器型数据类型,以[]作为容器的标志,里面多个元素用逗号隔开:[元素1,元素2,…]
列表是可变(指的是元素的个数、值和顺序可变)、列表有序、
列表的元素可以是任何类型数据;同一个列表可以有多个不同的元素
list1 = [32, 5, 'abc', True]
print(list1)
empty = [] # 空列表
print(empty)
2.获取列表元素
1> 获取单个元素
a.语法
列表[下标] - 获取列表中指定下标对应的元素
b.说明
1.列表 - 任何结果是列表的表达式(比如:具体的列表值、保存列表的变量、运算结果是列表的运算表达式、返回值是列表的函数调用表达式)
2.[] - 固定写法
3.下标 - 下标又叫索引;表示的是元素在有序序列中的位置信息。
python中下标值有两种:
1)0~长度-1,其中0表示第一个元素的位置,1就是第二个元素的位置…
2)-1~-长度,其中-1表示最后一个元素的位置,-2就是倒数第二个元素的位置…
scores = [50,90,86,84,10,55]
print(scores[1]) #90
print(scores[-5]) #90
注意:获取单个元素的时候下标不能越界
print(scores[6]) # list index out of range
2> 遍历列表 - 将列表中的元素一个一个的取出来
方式一:
for 变量 in 列表:
循环体
方式二:同时获取每个元素的下标和值
for 下标, 元素 in enumerate(列表):
循环体
scores = [50,90,86,84,10,55]
for item in scores:
print(item)
print('===============================')
for item in range(len(scores)):
print(scores[item])
for x, y in enumerate(scores):
print(x,y)
练习1:求一个班所有学生的总成绩
count = 0
for i in scores:
count += i
print(count)
练习2:统计班上不及格学生的人数
count = 0
for i in scores:
if i < 60:
count += 1
print('不及格学生的人数',count)
3> 获取部分元素(切片)
列表切片的结果还是列表
语法:
列表[开始下标:结束下标:步长] - 从开始下标开始取,每次下标值增加步长去取下一个值,到结束下标前为止
如果步长为正:表示开始下标到结束下标是从前往后取,开始下标对应位置要在结束下标的位置的前面才能取到值
如果步长为负:表示开始下标到结束下标是从后往前取,开始下标对应位置要在结束下标的位置的后面才能取到值
names = ['a','b','c','d','e']
print(names[1:4:1]) #['b', 'c', 'd']
print(names[1:4:-1]) #[]
print(names[1:-1:1]) #['b', 'c', 'd']
- 省略步长
列表[开始下标:结束下标] - 省略步长就相当于步长是1:列表[开始下标:结束下标:1]
scores = [50,90,86,84,10,55]
print(scores[1:-1]) #[90, 86, 84, 10]
print(scores[5:1]) #[]
- 省略开始下标
列表[:结束下标:步长] 列表[:结束下标]
如果步长为正,表示从第一个元素开始往后取
如果步长为负,表示从最后一个元素开始往后取
print(movies[:5:2]) # ['僵尸世界大战', '致命弯道', '生化危机']
print(movies[:-2]) # ['僵尸世界大战', '电锯惊魂', '致命弯道', '死神来了']
print(movies[:-3:-1]) # ['林中小屋', '生化危机']
print(movies[:-1:-1]) # []
- 省略结束下标
列表[开始下标::步长]/列表[开始下标:]
如果步长为正,表示从前往后取到最后一个元素为止
如果步长为正,表示从后往前取到第一一个元素为止
v_list = ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[2:]) # ['名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[-3::-1]) # ['三国演义', '西游记', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']
- 开始下标和结束下标都省
列表[::步长] / 列表[:]
如果步长为正,表示从前往后从第一个元素取到最一个元素
如果步长为负,表示从后往前从最后一个元素取到第一个元素
print(tv_list[:]) # ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[::-1]) # ['尼基塔', '生活大爆炸', '三国演义', '西游记', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']
print(tv_list[::-2]) # ['尼基塔', '三国演义', '名侦探狄仁杰', '甄嬛传']