python学习第六天,数字和列表的学习
一、数字类型
python中的数字类型:
int(整型)、float(浮点型)、bool(布尔)、complex(复数)
1、int(整型)
所有整数对应的类型。
2、float(浮点型)
所有小数对应的类型,支持科学计数法
print(3e4, 3e-2)
3、bool(布尔)
只有True和False两个值,True和False的本质是0和1
4、complex(复数)
包含实部和虚部的数叫复数,对应的数据类型:complex
python中表示复数时,虚数单位时j
num1 = 10 + 2j
num2 = 2 - 1j
num3 = 20j
print(type(num1)) #<class 'complex'>
print(num1 + num2) #(12+1j)
print(num2 * num1) #(22-6j)
"""
10 2
2j -1j
10*2 + 10*(-1j) + 2*2j + 2j*(-1j) = 22-6j
"""
5、数据类型转换
python中的所有数据类型转换方式:类型名(数据)
1)整型:int(数据)
所有的数字类型对应的数据都可以转换成整型(复数不行),部分字符串也可以转换成整型
对于字符串来说,去掉引号以后本身是合法的制定进制的整数对应的字符串才能转换成对应的整型
print(12.5, int(12.5)) #12.5 12
print(int(True), int(False)) #1 0
print('123', int('123')) #123 123
print('+123', int(+123), int('-123'))#+123 123 -123
print('123.45',int('123.45')) #报错
print('abc',int('abc')) #报错
int(数据,进制) ----- 其他进制转换十进制
print(int('0b1101', 2))
print(int('1101', 2))
# print(int('1201', 2)) 报错
print(int('0o5623',8))
2)浮点型:float(数据)
整型和布尔都可以转换成浮点型,部分字符串也可以转换成浮点型
print(float(10)) #10.0
print(float(True)) #1.0
print(float('1000')) #1000.0
print(float('12.5')) #12.5
print(float('12.5a')) 报错
print(float(3e4)) #30000.0
print(float(12.5)) #12.5
3)布尔:bool(数据)
所有类型的所有数据都可以转换成布尔类型。
所有零值或者空值转换成False,其他都是True
print(bool('')) #False
print(bool(1)) #True
二、列表基础
1、容器型数据类型:可以同时保存多个数据的数据。常见的容器型数据类型:列表、元组、字典、集合、字符串、迭代器、生成器
容器中的每个独立的数据叫元素
2、列表
1)什么是列表:
列表是容器型数据类型,将[]作为容器的标志,里面多个数据(元素)用逗号隔开。比如:[12,13,14]
列表是可变的(列表中的元素个数和值是可变的)——有序性
列表中的元素:可以是任何类型的数据;不同元素的数据类型可以不相同
list1 = ['123',1,3,'str']
3、获取列表元素
1) 获取单个元素
列表[下标]
列表 - 可以是任何结果是列表的表达式:独立的列表数据、保存列表的变量、返回值是列表的函数表达式、结果是列表的运算表达式
[] - 固定写法
下标 -
补充:什么是下标
下标就是索引,用来表示有序序列中元素的位置(顺序)。
列表中的每一个元素都有固定的下标来表示这个元素在列表中的位置,下标值的范围是从0开始依次增加,其中0表示第一个元素…
列表中的每个元素有两种下标值,一种是正的下标值(0开始),另一种是负的下标值(从-1开始,依此减少,-1表示最后一个元素)
list1 = ['123',1,3,'str']
print(list1[1]) #1
print(list1[-1]) #str
2) 获取部分元素 - 切片
列表[开始下标:结束下标;步长]
从开始下标开始,下标每次增加步长,取到结束为止。
列表 - 可以是任何结果是列表的表达式:独立的列表数据、保存列表的变量、返回值是列表的函数表达式、结果是列表的运算表达式
[] - 固定写法
开始下标、结束下标 - 下标值、整数
步长 - 整数
注:切片下标可以越界
names = ['鲁班七号', '盲僧', '亚索', '妖姬', '雷霆嘎巴']
print(names[1:4:1]) #['盲僧', '亚索', '妖姬']
print(names[-1:1:-1]) #['雷霆嘎巴', '妖姬', '亚索']
3) 切片语法的省略写法
①省略步长
列表[开始下标:结束下标] —> 列表[开始下标:结束下标:1]
names = ['鲁班七号', '盲僧', '亚索', '妖姬', '雷霆嘎巴']
print(names[-2:4]) #['妖姬']
print(names[1:4]) #['盲僧', '亚索', '妖姬']
print(names[-1:4]) #[]
②省略开始下标
列表[:结束下标:步长] —> 列表[:结束下标]
步长为正,从前往后取
步长为负,从后往前取
names = ['鲁班七号', '盲僧', '亚索', '妖姬', '雷霆嘎巴']
print(names[:2:-2]) #['雷霆嘎巴']
print(names[:-1:1]) #['鲁班七号', '盲僧', '亚索', '妖姬']
③省略结束下标
列表[开始下标:步长] / 列表[开始下标:]
步长为正,从前往后取到最后一个元素为止
步长为负,从后往前取到第一个元素为止
names = ['鲁班七号', '盲僧', '亚索', '妖姬', '雷霆嘎巴']
print(names[-3:]) #['亚索', '妖姬', '雷霆嘎巴']
print(names[-1::2]) #['雷霆嘎巴']
④同时省略开始和结束下标
列表[::步长] / 列表[:]
步长为正,从第一个取到最后一个
步长为负,从最后一个取到第一个
names = ['鲁班七号', '盲僧', '亚索', '妖姬', '雷霆嘎巴']
print(names[::-1]) #['雷霆嘎巴', '妖姬', '亚索', '盲僧', '鲁班七号']
print(names[:]) #['鲁班七号', '盲僧', '亚索', '妖姬', '雷霆嘎巴']
print(names[::2]) #['鲁班七号', '亚索', '雷霆嘎巴']
4) 遍历列表 - 一个一个的取出列表中的数据
方法一:(直接取)
for 变量 in 列表:
循环体
方法二:(间接获取,通过下标)
for 下标 in 下标对应的数字序列:
循环体
for m in names:
print(m, end=' ') #鲁班七号 盲僧 亚索 妖姬 雷霆嘎巴
print()
print('+++++++++++++++++++++++++++++++++++++++++++++')
for index in range(len(names)):
print(names[index], end=' ') #鲁班七号 盲僧 亚索 妖姬 雷霆嘎巴
print()
例:用一个列表保存一个班所有学生的分数,统计不及格学生的人数
count = 0
scores = [10,20,30,40,50,60,70,80,90,100]
for i in scores:
if i < 60:
count += 1
print('不及格人数:',count) #不及格人数: 5
例:计算班级的平均分
score = 0
for i in range(len(scores)):
score+=scores[i]
score/=len(scores)
print('平均成绩:',score) #平均成绩: 55.0
三、列表的增删改操作
1、增 - 添加元素
1)append - 追加
列表.append(元素) - 在列表的最后添加指定元素
list1 = [1, 2, 3, 4, 5, 6, 7]
print(list1) #[1, 2, 3, 4, 5, 6, 7]
list1.append('123')
print(list1) #[1, 2, 3, 4, 5, 6, 7, '123']
2)insert - 插入
列表.insert(下标,元素) - 在指定列表指定下标前插入指定的元素
list1 = [1, 2, 3, 4, 5, 6, 7]
list1.insert(2, 3)
print(list1) #[1, 2, 3, 3, 4, 5, 6, 7]
list1.insert(5, '122')
print(list1) #[1, 2, 3, 3, 4, '122', 5, 6, 7]
例:不断输入成绩,存入列表中,当输入-1时结束输入
scores = []
while True:
s = int(input('please input score:'))
if s == -1:
print('输入结束!')
break
scores.append(s)
print(scores)
2、删 - 删除元素
1)del语句
del 列表[下标] - 删除指定下标对应的元素(不能越界)
list1 = [1, 2, 3, 4, 5, 6, 7]
del list1[5]
print(list1) #[1, 2, 3, 4, 5, 7]
2)remove 删除指定元素
列表.remove(元素) - 删除列表中指定元素(如果指定元素不存在,报错,如果存在多个,只删最前面那一个)
list1 = [1, 2, 3, 4, 5, 6, 7]
list1.remove(100) #list.remove(x): x not in list
list1.remove(1)
print(list1) #[2, 3, 4, 5, 6, 7]
3)pop 取出列表元素
列表.pop()- 取出列表的最后一个元素,并且返回被取出的元素
列表.pop(下标) - 取出列表中指定下标对应的元素
list1 = [1, 2, 3, 4, 5, 6, 7]
print(list1.pop(2)) #3
print(list1) #[1, 2, 4, 5, 6, 7]
3、改 - 修改元素的值
①列表[下标] = 新的元素 - 将指定下标对应元素修改成新的元素
list1 = [1, 2, 3, 4, 5, 6, 7]
list1[1] = '1234'
print(list1) #[1, '1234', 3, 4, 5, 6, 7]
例:将[89,45,-55,30,-78,98,-34,87,10,59,100,-19]中有负号的换为0
list1_1 = [89, 45, -55, 30, -78, 98, -34, 87, 10, 59, 100, -19]
for i in range(len(list1_1)):
if list1_1[i] < 0:
list1_1[i] = 0
print(list1_1) #[89, 45, 0, 30, 0, 98, 0, 87, 10, 59, 100, 0]
②列表[开始下标:结束下标] = [替代元素(多个用逗号隔开)] / ‘字符串’
list1_1 = [89, 45, -55, 30, -78, 98, -34, 87, 10, 59, 100, -19]
list1_1[2:4] = [100,200,300]
print(list1_1) #[89, 45, 100, 200, 300, -78, 98, -34, 87, 10, 59, 100, -19]
list1_1[2:4] = '123'
print(list1_1) #[89, 45, '1', '2', '3', 300, -78, 98, -34, 87, 10, 59, 100, -19]
4、in和not in
元素 in 列表 – 布尔值(返回结果判定是否在)
元素 not in 列表 – 布尔值(判定是否不在)
list1_1 = [89, 45, -55, 30, -78, 98, -34, 87, 10, 59, 100, -19]
if 45 in list1_1:
print(True) #True
if 45 not in list1_1:
print(True)
else:
print(False) #False