学习python的第4天

本文介绍了Python中的数字类型,包括int、float、complex和bool,并详细阐述了它们的转换规则。接着,深入探讨了列表的基础知识,如列表定义、元素获取、遍历列表和切片操作。此外,还提到了列表作为可变容器类型的特性及其在实际问题中的应用,如计算学生成绩等。

数字类型和列表

一.数字类型

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])  # ['尼基塔', '三国演义', '名侦探狄仁杰', '甄嬛传']
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值