数据类型进阶
python的数据类型可以分为三类:数值类型,序列类型,散列类型
数值类型:int , float , bool
2.1 序列类型
元素1 元素2 元素3 元素4 元素。。。。 元素n
0 1 2 3 4 n-1
-n
# 元素下面的是索引取值
s = 'CSDN博客论坛'
print(s[0],'=',s[-8])
print(s[-1],'=',s[7])
C = C
坛 = 坛
2.2 字符串 str
字符串是一个有序的字符集和,用于存贮和表示基本的文本信息
2.2.1 常用方法
操作数据最本质的行为是什么?== 》增删改查
字符串.方法名
2.2.1.1 find
find的作用:范围性查找子串,返回索引值,没有则返回-1
语法:
str.find(str,beg=0,end=len(string))
- str==> 指定检索的字符串
- beg==》开始的索引,默认值为0
- end==》结束的索引,默认为字符串的长度
find常用于检测字符串中是否包含子字符串str
s = 'hello world'
print(s.find('o')) #o 的索引值就是4
print(s.find('hello')) # 找到hello则返回首个字符的索引
print(s.find('worldd')) # 找不到返回-1
s = ('python,helloworld,java,php')
print(s.find('h')) # 返回的是首个h的下标
print(s.find('h',4)) # 从下标为4的地方开始找
print(s.rfind('h')) # 从后往前找
2.2.1.2 index()
检测字符串中是否包含子字符串str,如果指定beg和end范围,则检查是否包含在指定范围内,和find差不多,只不过如果子str不在str中会报错
s = ('python,helloworld,java,php')
print(s.index('world')) # 12 索引值
print(s.index('worldd')) # 报错
2.2.1.3 count()
返回找到的子串个数
s = ('python,helloworld,java,php')
print(s.count('h')) # 3 h的个数
2.2.1.4 strip()
去除字符串两边的空格,换行符,制表符,得到的是一个新的字符串
code = input('请输入4位的验证码:')
data = code.strip()
if data == 'ABCD':
print('验证码正确')
else:
print('验证码错误')
2.2.1.5 startswith(), endswith()
- 判断字符串是否已xx开头,得到一个布尔值
dizhi = input('请输入住址:')
if dizhi.startswith('北京市'):
print('北京人口')
else:
print('非北京人口')
- 判断字符串是否已xx结尾,得到一个布尔值
dizhi = input('请输入住址:')
if dizhi.endswith('村'):
print('农业户口')
else:
print('非农业户口')
s = '北京市朝阳区'
print(s.startswith('北京市'))
2.2.1.6 isdigit()
- 判断字符串是否是数字组成,返回的结果是布尔值
v1 = input('请输入第一个值:')
v2 = input('请输入第二个值:')
if v1.isdigit() and v2.isdigit():
data = int(v1)+int(v2)
print(data)
else:
print('请输入正确的数字')
2.2.1.7lower() 和 upper()
字符串变大写/小写,得到一个新的字符串
lower()==》转小写
upper()==》转大写
s = 'C'
print(s)
s1 = s.lower()
print(s1)
s2 = s1.upper()
print(s2)
C
c
C
2.2.1.8 split()
切分字符串,将字符串类型转成列表,默认以空格切分,也可以指定字符切分
s = 'my name is zuoshou'
print(s.split())
s1 = 'python,helloworld,java,php'
print(s1.split(','))
['my', 'name', 'is', 'zuoshou']
['python', 'helloworld', 'java', 'php']
2.2.1.9 replace()
字符串内容的替换,得到一个新的字符串
s = input('请输入评论信息:')
s1 = s.replace('草','*')
print(s1)
2.2.1.10 join()
用于将序列中的元素以指定的字符串连接生成一个新的字符串
常用于将列表转为字符串
a = ['左手', '和', 'look', '是', '好朋友']
print(''.join(a)) # 常用于转化列表为字符串时使用
print('-'.join(a))
左手和look是好朋友
左手-和-look-是-好朋友
2.2.2 字符串的公共功能
2.2.2.1正向取(从左往右),反向取(从右往左,负号)
s = 'hello python'
# 正向取值
print(s[0]) # 取值为 h
print(s[5]) # 空格,空格也算是字符串里的一个字符
# 反向取值
print(s[-4]) # 取值为 t
len的用法
len 是从1开始数 计量字符串长度
print(s[len(s)-1]) # 最后一个值
print(len(s)) # len 计算字符串的长度
print(s[-len(s)]) # len 前面加负号 是从右到左取值
2.2.2.2 切片(顾头不顾尾,步长)
s = 'hello python'
print(s[::2])
hlopto
步长:0:9:2 第三个参数2代表步长,会从下标0开始,每次累加一个2就可以
print(s[0:9:2])
hlopt
print(s[::-1]) # 从右到左依次取值 反向取值 步长为负数就是从右到左 首尾不给值就是取所有
nohtyp olleh
2.3 列表 list
可以存放多个不同类型的元素,记录多个同种属性的值
列表:存贮同一个类别的数据,方便操作
字符串,不可变类型:创建好之后内部无法修改[内置功能都是新创建一份数据]
name = 'zuoshou'
data = name.upper()
print(name)
print(data)
zuoshou
ZUOSHOU
列表,可变类型:创建好之后内部元素可以修改[独有功能基本上都是直接操作列表内部的,不会创建一份新的数据]
list1 = ['车子', '房子']
list1.append('妹子') # append ’添加‘的方法
print(list1)
['车子', '房子', '妹子']
列表的创建
列表名 = []
2.3.1 增
1.append:添加一个数据,添加到列表的最后一位
语法: 列表名.append('左手')
li..append('左手')
print(li)
[2, 3, 4, 5, 6, 7, 8, 9, 10, '左手']
2.insert: 添加一个数据到指定位置
语法:列表名.insert(下标位置,内容)
li.insert(0,'look')
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手']
3.extend:添加一个序列类型到最后一位,并且吧序列类型拆分
语法:列表名.extend(序列类型)
li.extend('吸血鬼')
print(li)
li.extend(['吸血鬼'])
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼', '吸血鬼']
2.3.2 删
pop:删除一个值,默认从最后一个开始删,也可以指定位置
语法:列表名.pop()
列表名.pop(下标)
li.pop(-1)
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
remove:删除一个指定的值,如果有多个,从第一个开始删
语法:列表名.remove(删除对象)
li.remove(3) # 删除对象
print(li)
['look', 2, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
clear :清空列表里面的所有数据
语法:列表名.clear()
li.clear()
print(li)
[]
del : 全局删除,可以删除一个变量
语法:del 列表名[下标]
del li[3] # 下标
print(li)
['look', 2, 4, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
2.3.3 改
单个修改:直接通过下标进行修改
语法:列表名[下标] = 内容
li[1] = '阿尔法'
print(li)
['look', '阿尔法', 4, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
多个修改:通过切片的方式进行修改
语法: 列表名[起点:终点] = 数值1, 数值2
li[1:3] = 70,20
print(li)
['look', 70, 20, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
2.3.4查
index:根据内容获取指定数据的下标
语法:列表名。index(要找的内容)
print(li)
print(li.index(8))
5
列表名。index(要找的内容,起点值)
print(li.index(20,5)) #报错,显示20不在列表中
count:统计数据出现的次数
语法:列表名.count(要找的内容)
print(li.count(10))
1
2.3.5 其他
排序(全int的列表才可以排序)
sort:让列表的内容按照降序/升序的方式来排序
列表名.sort()——》升序
li1 = [1,85,6,8,61,3,45321,1965]
li1.sort()
print(li1)
[1, 3, 6, 8, 61, 85, 1965, 45321]
列表名.sort(reverse=True)——》降序
li1 = [1,85,6,8,61,3,45321,1965]
li1.sort(reverse=True)
print(li1)
[45321, 1965, 85, 61, 8, 6, 3, 1]