数字类型和列表
一.数字类型
python中的数字相关类型:int(整型)、float(浮点型)、complex(复数)、bool(布尔)。
1.int(整型) - 所有的整数对应的类型
num2 = 0b10101 - 在数字前加0b/0B表示二进制数(二进制数中只有0和1两个基数)。
num8 = 0o76 - 在数字前加0o/0O表示8进制数(基数;0-7)。
num16 = 0x3f - 在数字前加0x/0X表示16进制数(16进制数的基数;0-9,a-f/A-F)。
- 进制转换
print(num8) # print(其他进制数) - 查看对应的十进制数
print(bin(89)) # 0b1011001 二进制转换
print(oct(89)) # 0o131 8进制转换
print(hex(89)) # 0x59 16进制转换
- int的类型转换:int(数据)
浮点数转换成整数的时候只是单纯的保存整数部分。
print(int(2.34)) # 2
print(int(1.999)) # 1
print(int(-2.4)) # -2
复数不能转换成int类型。
print(int(10+3j)) # can't convert complex to int
布尔可以转换成int类型。
print(int(True)) # 1
print(int(False)) # 0
字符串中的值是整数可以转换成int类型,否则不能转换成int类型。
print(int('abc')) # ValueError: invalid literal for int() with base 10: 'abc'
print(int('12.5')) # ValueError: invalid literal for int() with base 10: '12.5'
print(int('34')) # 34
print(int('-125')) # -125
2.float(浮点型) - 所有小数对应的类型
类型转换
- int类型可以转换成float类型。
print(float(19)) # 19.0
- 复数不能转换成float类型。
print(float(3+4j)) # TypeError: can't convert complex to float
- 字符串中的数据为小数,可以转换成float类型;否则,不能转换。
print(float('12b23')) # TypeError: can't convert complex to float
print(float('12.8')) # 12.8
- 布尔可以转换成float类型。
print(float(True)) # 1.0
3.complex(复数) - 由实部和虚部组成的数字就是复数(虚数单位是j)
- 虚部如果是1j,1不能省略。
c3 = 3 + j # NameError: name 'j' is not defined
- 如果实部是0可以省略。
c4 = 3j
print(c4) # 3j
- python中的复数直接支持复数的数学运算。
c1 = 10-2j
c3 = 3+1j
print(c1 + c3) # (13-1j)
print(c1 * c3) # (32+4j)
4.bool(布尔) - 只有True和False两个值
- True本质就是1,False就是0
- 所有的类型的数据都可以转换成布尔
- 所有的0值和空值都会转换成False,其他都是True。
二.列表的基础
1.什么是列表
列表是容器型数据类型,以[]作为容器的标志,里面多个元素用逗号隔开:[元素1, 元素2, 元素3, …];
列表是可变的(指的是元素的个数、值和顺序可变),列表是有序的;
列表的元素可以是任何类型的数据:同一个列表可以有多个类型不同的元素。
list1 = [32, 'A', True, 32]
print(list1) # [32, 'A', True, 32]
2.获取列表元素
语法:
列表[下标] - 获取列表中指定下标对应的元素。
说明:
-
列表 - 任何结果是列表的表达式(比如:具体的列表值、保存列表的变量、运算结果是列表的表达式、返回值是列表的函数调用表达式)。
-
[] - 固定写法
-
下标 - 下标又叫索引:表示的是元素在有序序列中的位置信息。
python中的下标值有两种:
(1)0 ~ 长度-1,其中0表示第一个元素的位置、1就是第二个元素的位置、… 。
(2)-1 ~ 长度,其中-1表示最后一个元素的位置、-2就是倒数第二个元素的位置、…。
scores = [90, 78, 59, 76, 84]
print(scores[1]) # 78
print(scores[-4]) # 78
注意:获取单个元素的时候下标不能越界。
3.遍历列表 - 将列表中的元素一个一个的取出来
方式一:
for 变量 in 列表:
循环体(变量取到的是列表中的元素)
方式二:
for 下标, 元素 in enumerate(列表):
循环体
- 直接获取列表中的元素
scores = [90, 78, 59, 76, 84]
for item in scores:
print(item)
# 90,78,59,76,84
- 同时获取每个元素的下标和值
scores = [90, 78, 59, 76, 84]
for x, y in enumerate(scores):
print(x, y)
# 0 90
# 1 78
# 2 59
# 3 76
# 4 84
练习:求一个班所有学生的总成绩,平均成绩,统计班上所有不及格的人数。
scores = [90, 78, 59, 76, 84, 30, 99, 45]
total = 0
for score in scores:
total += score
print('总成绩:', total, '平均分:', total / len(scores))
count = 0
for score in scores:
if score < 60:
count += 1
print('不及学生的人数:', count)
# 总成绩: 561 平均分: 70.125
# 不及学生的人数: 3
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
movies = ['僵尸时间大战', '电锯惊魂', '致命弯道', '死神来了', '生化危机', '林中小屋']
print(movies[1:-1]) # ['电锯惊魂', '致命弯道', '死神来了', '生化危机']
print(movies[5:2]) # []
- 省略开始下标
列表[:结束下标:步长]/[:结束下标] - 如果步长为正,表示从第一个元素开始往后取;如果步长为负,表达从最后一个元素开始往前取。 - 省略结束下标
列表[开始下标::步长]/[开始下标:] - 如果步长为正,从前往后取到最后一个元素为止;如果步长为负,从后往前取到第一个元素为止。
tv_list = ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游戏', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[2:]) # ['名侦探狄仁杰', '西游戏', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[-3::-1]) # ['三国演义', '西游戏', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']
- 开始下标和结束下标都省略
列表[::步长]/列表[:] - 如果步长为正,从前往后第一个元素取到最后一个元素;如果步长为负,从后往前最后一个元素取到第一个元素。
print(tv_list[:]) # ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游戏', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[::-1]) # ['尼基塔', '生活大爆炸', '三国演义', '西游戏', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']
print(tv_list[::-2]) # ['尼基塔', '三国演义', '名侦探狄仁杰', '甄嬛传']
本文介绍了Python中的数字类型,包括int、float、complex和bool,并详细阐述了它们的转换规则。接着,深入探讨了列表的基础知识,如列表定义、元素获取、遍历列表和切片操作。此外,还提到了列表作为可变容器类型的特性及其在实际问题中的应用,如计算学生成绩等。
51万+

被折叠的 条评论
为什么被折叠?



