数据类型和列表
内容回顾(基础篇三)
1:if条件
应用场景:
1)if 单分支: 满足条件执行某个操作,不满足就不执行
2)if 双分支: 满足条件执行某个操作,不满足执行另一个操作
3)if 多分支: 根据不同的条件执行不同的操作
2:for循环和while循环的选择
1)什么时候用for循环
a.遍历序列
b.循环次数确定
2)什么时候用while循环
a.死循环
b.循环次数确定
while True:
if 循环结束的条件:
break
数字类型
python中数字相关的类型有4中**:int(整型),float(浮点性),comlex(复数),bool(布尔)**
1.int(整型) - 所有整数对应的类型
num = 23
num1 = 0b1010 # python中的二进制数表示方式,在数字前面加上0b(二进制基数:0,1)
num8 = 0o76 # python中的八进制数表示方式,在数字前面加上0o(八进制基数:0~7)
num16 = 0x78 # python中的十六进制的表示方法,在数字前面加上0x(十六进制奇数:0~10,A~F)
print(num1) # print(其他进制数)- 查看对应的十进制数
print(num8)
print(num16)
进制转换
print(bin(89)) # 0b1011001
print(oct(89)) # 0o131
print(hex(89)) # 0x59
int的类型转换:int(数据)
print(int(2.33)) # 2
print(int(1.99)) # 1
print(int(-2.3)) # -2 (浮点数转换成整数的时候知识单纯的保存整数部分)
print(int(10+3j)) # 复数不能转换成int类型
print(int(True)) # 1
print(int(False)) # 0
# print(int("12.5")) # 不能转换
print(int("-120")) # 可以转换
# print(int("0b111")) # 不可以转换:invalid literal for int() with base 10: '0b111'
print(int("0b111",base=2)) # 7:base控制的进制,默认是10进制
2.float(浮点型) - 所有小数对应的类型
f1=12.4
f2=3e4
print(f2)
类型转换
print(float(19)) # 19.0
print(float(True)) # 1.0
# print(int(10+3j)) # 复数不能转换成float类型
# print(float("12f34"))
print(float("12.8")) # 12.8
print(float("67")) # 67
print(float("2e8")) # 200000000.0
3.complex(复数) - 由实部和虚部组成的数字就是复数(复数的单位是j)
c1 = 10-2j
print(type(c1))
c2 = -3j # 如果实部是0,可以省
# c3 = 3+j # NameError: name 'j' is not defined(虚部值如果是1,1不能省略)
c3 = 3+1j
print(1j*1j) # (-1+0j)
python中复数直接支持复数的数学运算
print(c1+c3) #(13-1j)
print(c1*c3) #(32+4j)
print(c1/c3)
print(complex(10)) # (10+0j)
#
4.bool(布尔)
True本质就是1,False本质就是0
类型转换 (所有类型的数据都可以转换成布尔)
所有的0值和空值都会转换成False,其他都是True
num=0
if num ==0:
print("num为0")
if not num:
print('num为0')
if num!=0:
print('num不为0')
if num:
print('num不为0')
列表基础
1.什么是列表
列表是容器数据类型,以[]作为容器的标志,里面的多个元素用逗号隔开:[元素1,元素2,元素3,,,,,]
列表是可变(指的是元素的个数、值和顺序可变)、列表是有序的
列表的元素可以是任何类型的数据,同一个列表可以有多个类型不同的元素
list1 = [34, 'abc', True, 34]
print(list1)
empty = [] # 空列表
2.获取列表元素
1)获取单个元素
a.语法
列表[下标] - 获取指定位置的元素
b.说明
- 列表 - 任何结果是列表的表达式
(比如:具体的列表值、保存列表的变量、运算结果式列表的运算表达式。返回值是列表的函数调用表达式) - [] - 固定写法
- 下标 - 下标又叫索引;表示的是元素在有序序列中的位置信息
python中下标值由两种:
1)0~长度-1:其中0表示第一个元素、1表示第二个元素,以此类推。。。
**2)-1~-长度,**其中-1表示最后一个元素的位置,-2就是表示第二个元素的位置,以此类。。。
brothers = ["国栋", "定名", "秋冬", "忠玉", "郭糠"]
print(brothers[2])
print(brothers[-3])
# 注意:获取单个元素的时候下标不能越界
# print(brothers[5]) #IndexError: list index out of range
2) 遍历列表-将列表中的元素一个一个的取出来
方式一:
for 变量 in 序列:
循环体
方式二
for 下标,元素 in enumerate(列表):
循环体
直接获取列表中的元素
for brother in brothers:
print(brother)
同时获取每个元素的下标和值
for index, value in enumerate(brothers):
print(index, value)
获取班上学生总分、平均分、不及格人数
scores = [90, 32, 79, 80, 67, 45]
sum = 0
fail_people = 0
for i in scores:
sum += i
if i < 60:
fail_people += 1
print("总分:", sum, "平均分:", sum / len(scores), "不及格:", fail_people)
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]) # ['国栋', '定名', '秋冬', '忠玉']
省略步长
列表[开始下表:结束下表] - 省略步长,相当于步长是1
brothers = ["国栋", "定名", "秋冬", "忠玉", "郭糠"]
print(brothers[1:-1]) # ['定名', '秋冬', '忠玉']
省略开始下标
列表[:结束下表:步长]/列表[:结束下标]
如果步长为正,表示从第一个元素开始往后取
如果步长为负,表示最后一个元素开始往前取
brothers = ["国栋", "定名", "秋冬", "忠玉", "郭糠"]
print(brothers[:5:2])
print(brothers[:-2]) # ['国栋', '定名', '秋冬']
print(brothers[:-3:-1]) # ['郭糠', '忠玉']
省略结束下标
列表[开始下标::步长]/列表[开始下表:]
如果步长为正,取到最后一个元素为止
如果步长为负,从后往前取到第一个元素为止
tv_list = ['甄嬛传', '名侦探柯南', '名侦探狄仁杰',"西游记","死亡游戏"]
print(tv_list[2:]) #['名侦探狄仁杰', '西游记', '死亡游戏']
print(tv_list[-3::-1]) #['名侦探狄仁杰', '名侦探柯南', '甄嬛传']
开始小标和结束下标都省
#列表[::步长]/列表[:]
如果步长为正,从前往后从第一个取到最后一个元素;
如果步长为负,从后往前从最后一个取到第一个元素;