1、序列类型
上一篇文章讲到的int float bool-->数值类型 表示一个数值,数值类型比较适合存储一个数据,不适合存储多个数据
ages=1819192020 #不加注释不清楚这个值什么
存储多个数据可以用到序列类型来存储
序列类型:(字符串,列表,元组)
1.可以存储多个数据的一种类型
2.里面的数据是有顺序,坐标概念的
2、序列类型核心概念--下标
在序列类型中数据是有下标的概念
下标类似于坐标,比如酒店的房间号/宿舍的门牌号
在程序中,和生活习惯不一样,程序下标是从0开始计算的
人类报数:1 2 3 4 5;第一个数是1,第二个数是2
机器报数:0 1 2 3 4;第一个数是0,第二个数是1
下标也支持负数取值,最后一个数为-1,倒数第二个数为-2
name='小赵同学'
小 赵 同 学
0 1 2 3
-4 -3 -2 -1
求字符串的正向下标:
one="2022700602"
print(one.find("7")
字符串的逆向下标=正向下标-数据长度
one="2022700602"
print(one.find("7")-len(one)) #len()是一个求字符串长度的函数
3、序列类型核心概念--索引
现在知道了一个数据的位置,是不是也可以找到这个数据,并且给他提取出来呢?
在序列类型中,通过下标提取对应的'一个'数据,这种行为称为索引
语法:
序列名[下标]
name='小赵同学'
print(name[0]) #小
print(name[-4]) #小
print(name[2]) #同
print(name[-2]) #同
#print(name[5]) #报错,下标越界
4、序列类型核心概念--切片
索引可以取出数据,但是只能取一个数据,如果需要取多个数据就很麻烦,这时就可以使用切片
在序列类型中,通过下标一次性取'多个'数据的行为,这种行为称为切片
语法:
序列名[起点下标:终点下标]
talk='今天我们也要好好学习呀'
print(talk[0:3]) #今天我 取头不取尾的概念
print(talk[2:10]) #我们也要好好学习
print(talk[2:15]) #超出索引范围,切片不会报错,默认是取完
print(talk[:6]) #今天我们也要 不写起点默认从头开始取数据
print(talk[2:]) #我们也要好好学习呀 不写终点默认取到最后
print(talk[-5:-1]) #好好学习
print(talk[2:-5]) #我们也要
#取值都是从左往右进行取值,程序不会往回走,
#起点和终点值如果设置的往回取数据就是取不到值的
print(talk[2:0]) #取不到数据
print(talk[-2:-4]) #取不到数据
print(talk[:]) #起点值和终点值不设,没必要,多此一举,print(talk) 就可以了
切片的细节:
1.切片时,终点值实际都是取到它的前一位,取头不取尾 比如写2:6 实际上取到的2:5的范围
2.切片超出取值范围不会报错,那默认就是取完,跟单独索引不一样,单独索引超出下标就会报错
3.切片时,起点值或者终点值可以空着不写,不写起点默认从头开始取数据,不写终点默认取到最后
4.取值都是从左往右取值,程序不会往回走,起点和终点值如果设置的往回取数据就是取不到值的
5、序列类型核心概念--步长
生活中有的人腿很长,走楼梯一次走2,3节
程序中,正常取数据都是一位位的取,步长为1,可以通过设置步长的方式,取数据时跨多位取值 但是这个跨位是有规律的
把步长设为-1,就是反向输出数据
语法:
序列名[起点下标:终点下标:步长]
num='123456789'
#正常的话取值是这样
print(num[2:6]) #3456
#步长取值:
print(num[::2]) #取全部数据,一次跨两位取数据,输出13579
print(num[::3]) #取全部数据,一次跨三位取数据,输出147
print(num[::-1]) #取全部数据,反向输出数据987654321
6、列表与元组
6.1 列表list
列表list:表现形式为用一对中括号[]包裹起来的数据,里面的数据用逗号隔开
列表可以存储几乎所有的数据类型,并且里面的数据可以修改
语法:
列表声明:
列表名=[数据1,数据2,数据3,...]
列表修改:
列表名[下标]=数据 #修改这个数据
question=['在吗',10,False,1.5]
print(question)
print(type(question)) #<class 'list'>
question[0]='描述清楚问题加截图'#修改列表数据
print(question)
列表是可以嵌套的,也就是列表里面的还可以放列表
a=[1,2,3]
b=[4,5,6]
c=[a,b] #嵌套列表
print(c)
#嵌套取值的做法
print(c[0][1]) # 取出a列表,再接着拿a里的第二个元素2
6.2 元组-tuple
元组-tuple :表现形式为用一对小括号包裹起来的数据,里面的数据用逗号隔开
元组可以存储几乎所有的数据类型,并且里面的数据不可以修改
语法:
元组声明:
元组名=(数据1,数据2,数据3,...)
teacher=('小赵老师','木马老师','朵拉老师','圆圈老师')
print(teacher)
print(type(teacher)) #<class 'tuple'>
print(teacher[0])
#teacher[0]='美女' 元组不支持修改,会报错
#注意:
#元组里只有一个数据也要加逗号
#否则不会被认为是元组类型
num=(18)
print(type(num)) #<class 'int'>
num1=(18,)
print(type(num1)) #<class 'tuple'>
如果你要存的数据,会被修改-->用列表
food=['辣椒炒肉',20,'香干炒肉',25]
如果你要存的数据,不会被修改-->用元组
size=('s','m','l','xl')
7、转义字符
在python中有特别功能的一些'字符' 表示形式为\后面加了指定的字符
\n--换行
\t--制表符 4个空格 tab
\\--正常输出一个\
\'--正常输出引号
print('好好学习天天向上')
print('好好学习\n天天向上')
print('好好学习\t天天向上')
print('好好学习\\天天向上')
print('小赵同学说:\'好好学习,天天向上\'')
如果有个字符串里面有很多 但是并不是想用的转义字符 可以在字符串前面加上r 取消转义
print(r'好好学习\n天天向上')
主要取消转义是用于文件路径/网址
test1='D:\tproject\__pycache__\node'
test2=r'D:\tproject\__pycache__\node'
print(test1)
print(test2)
转义字符用的最多的就是\n和\t 以及取消转义
8、数据类型转换
在程序开发时,有时候有需求涉及到数据之间相互转换的场景
字符串'77' 转为数值77
数值77 转为'77'
所以针对这种情况 就可以通过类型转换来实现
但是有个前提 操作数据必须得合法规范
int(数据) -->把数据转为整型
float(数据) --> 把数据转为浮点型
bool(数据) --> 把数据转为布尔型
str(数据) --> 把数据转为字符串型
list(数据) --> 把数据转为列表型
tuple(数据) --> 把数据转为元组型
a=1
b=str(a)
print(type(b))
c='1'
d=int(c)
print(type(c))
print(type(d))
#e='哈哈'
#f=int(e) #报错 不符合规范
print(float('1.2'))
num=float('1.2')
print(type(num))
#num1=float('一点二') #报错 不符合规范
关于bool类型的转换问题 非零以及有值的话是转为True 空值(包括0,0.0)是转为False
目前学习的空值有(' ',[ ],( ))
name='小赵'
name1=bool(name)
print(name1)
name2=[]
name3=bool(name2)
print(name3)
input输入后的内容默认是字符串类型
#height=input('请输入你的身高')
#print(type(height)) #<class 'str'>
#print(height+10) #字符串和整型不能拼接
#转换类型
height1=int(input('请输入你的身高')) #转换为整型
print(type(height1)) #<class 'int'>
print(height1+10)
类型转换,如果需要用到转换之后的这个数据,可以采取重新赋值或者用新的变量来接收
#做法一:重新赋值给原变量,强制转换
age=int(age)
print(type(age)) #<class 'int'>
print(age+15)
#做法二:用新的变量接收,会保留原来的变量
money='8.8'
money1=float(money)
print(type(money)) #<class 'str'>
print(type(money1)) #<class 'float'>
print(money1+20)
注意:
在python中,给变量命名时,不要取名为print input float int str tuple list type