数据类型进阶(一)
数据类型包括:
- 数值类型:int、float、bool——》存储一个数值的数据类型
- 序列类型:str、list、tuple——》存储多个数据的数据类型
- 散列类型:无序、内部元素不重复
2.1 序列类型
一块可以存放多个值的连续的内存空间,这些值按照一定的顺序排列,可以通过每个值所在位置的编号(称之为索引)访问它们。
从左到右序列索引是从0开始 正索引值
从右到左序列索引是从-1开始 负索引值
s = "CSDN博客论坛"
print(s[0] == s[-8])
print(s[7] == s[-1])
#结果
True
True
2.2 可变类型和不可变类型
不可变类型:数字、字符串、元组
可变类型:列表、字典、集合
概念:
可变:值在发生改变时,内存地址不变,即id不变,证明在改变原来的值
不可变:值在发生改变时,内存地址也发生改变,即id也变,证明是乜有在改变原来的值,是产生了一个新的值
2.3 字符串
2.3.1 内置功能
语法:
字符串.方法名()
2.3.1.1 find()
范围性查找子串,返回索引值,没有则返回-1
语法:
s.find(str,begin=0,end=len(string))
#str——》指定检索的字符串
#beg——》开始索引,默认为0
#end——》结束索引,默认为字符串的长度
s = "hello,world"
print(s.find("h")) # h的索引值为0
print(s.find("world")) # 找到world则返回首个字符的索引
print(s.find("worldd")) # 找不到就返回-1
s = "python,helloworld,java,php"
print(s.find("h")) # 返回的是首个h的索引值 3
print(s.find("h",4)) # 从下标4开始找 7
print(s.rfind("h")) # rfind从后往前找
2.3.1.2 index()
检测字符串中是否包含子字符串了,如果指定beg(开始)和end(结束)范围,则检查是否包含在指定范围内,和find一样,只不过子字符串不在字符串中会报异常
s = "python,helloworld,java,php"
print(s.index('world')) # 12
print(s.index('worldd')) # 找不到就报错
2.3.1.3 count()
返回找到的字符串的个数,没有就返回0
s = "python,helloworld,java,php"
print(s.count("h")) # 3
2.3.1.4 strip()
去除字符串两边的空格、换行符、制表符,得到一个新的字符串
a = input("请输入:")
data = a.strip() #去除a字符串两边的空格、换行符、制表符
if data =='abcd':
print("正确")
else:
print("错误")
###
结果:
请输入: abcd
正确
2.3.1.5 startwith()、endswith()
判断字符串是否以指定字符开头、结尾,返回的结果是bool
startwith():#判断字符串是否以xx开头,得到一个布尔值
aa='西瓜'
print(aa.startswith('西'))
## True
endswith(): #判断字符串是否以xx结尾,得到一个布尔值
aa = '苹果'
print(aa.endswith("果"))
##True
2.3.1.6 isdigit()
判断字符串是否以整数组成,返回的结果为bool
num1 = input("请输入值:")
num2 = input("请输入值:")
if num1.isdigit() and num2.isdigit(): #判断num1 num2 是否以整数组成
data = int(num1)+int(num2)
print(data)
else:
print("请输入正确的数字")
2.3.1.7 lower()、upper()
字符串变大写\小写,得到的是一个新的字符串
#upper()——》转大写
#lower()——》转小写
s = "a"
s1 = s.upper()
print(s1)
s2 = s1.lower()
print(s2)
2.3.1.8 split()
切分字符串,默认以一个或者一个以上的空格(\t或者\n)切分,也可以指定字符切分
切完之后是字符串类型转列表类型
s = 'Wellcome to CSDN'
print(s.split())
s = "python,helloworld,java,php"
print(s.split(","))
##结果
['Wellcome', 'to', 'CSDN']
['python', 'helloworld', 'java', 'php']
2.3.1.9 replace()
字符串内容替换,得到一个新的字符串
两个参数,第一个参数是原来的字符,第二个是要替换的字符
content = input("请输入评论信息:")
content1 = content.replace("草","*") 把‘草’替换成‘*’
print(content1)
##结果
请输入评论信息:草长头上了
*长头上了
2.3.1.10 join()
用于将序列中的元素以指定的字符连接生成一个新的字符串
常用于列表类型转为字符串
arr = ["Wellcome","to","CSDN"]
print("".join(arr)) #无字符连接
print("-".join(arr)) #用—连接字符
##结果
WellcometoCSDN
Wellcome-to-CSDN
2.3.2 字符串的公共功能
2.3.2.1 正向取(从左往右)、反向取(从右往左、负号)
s = 'hello python'
# 正向取
print(s[0]) # h
print(s[5]) # 空格
# 反向取
print(s[-4]) # t
正着数从0算,倒着数从-1算,如果超出了 报错 下标越界
扩展:len()——》求长度
s = 'hello python'
print(len(s)) # 12
print(s[len(s)-1]) # 字符串的最后一个n(len(s)是长度 长度-1反正字符串的下标位置取值) # n
print(s[-len(s)]) # 字符串的第一个值 h
2.3.2.2 切片(顾头不顾尾,步长)
顾头不顾尾:取出索引为0到8的所有字符
s = 'hello python'
print(s[0:9]) # hello pyt
print(s[:9]) # 开始的下标不写的话默认为0 hello pyt
print(s[:]) # 从头到尾 hello python
步长:0:9:2 第三个参数2代表步长,会从下标0开始,每次累加一个2即可,所以会取出索引0 2 4 6 8 的字符
s = 'hello python'
print(s[0:9:2]) # hlopt
反向切片
print(s[::-1]) # 从右到左反向取值 步长为-1就是从右到左,首尾不给值就是所有的