基本数据类型内置方法
- 字符串的其它内置方法
- 列表内置方法
- 字典内置方法
- 元组内置方法
- 集合内置方法
详细内容
一、字符串的其它内置方法
因为字符串是所有基本数据类型当中内置方法最多的,所以上次没讲完,今天接着介绍
1.移除字符串首尾的指定字符,还可以自己选择移除的方向
如:s1 = '$$$jason$$$$$'
print(s1.strip('$'))
# jason
# 左边:print(s1.lstrip('$'))
# jason$$$$$
# 右边:print(s1.rstrip('$'))
# $$$jason
2.大小写的相关操作
如:# s1 = 'JAsOn'
# print(s1.lower())
# 将所有的英文字母变为小写 jason
# print(s1.upper())
# 将所有的英文字母变为大写 JASON
#print(s1.islower())
# 盘点字符串中所有得英文字母是否是小写,结果是布尔值
#print(s1.isupper())
# 盘点字符串中所有得英文字母是否是大写,结果是布尔值
3.判断字符串的开头或者结尾是否是指定的字符
# s1 = 'jason tony tom jerry 666'
# print(s3.startswith('j')) # True
# print(s3.startswith('jason')) # True
# print(s3.startswith('tony')) # False
# print(s3.endswith('6')) # True
# print(s3.endswith('666')) # True
# print(s3.endswith('jason')) # False
4.格式化输出(两种方法)
# 方法一:使用占位符:%s、%d
# 方法二:format>>>:四种玩法
# 玩法1:跟占位符一样,使用{}占位
如:print('my name is {} my age is{}'.format('jason, 18'))
# 玩法2:根据索引取值,可以反复使用
如:print('my name is {0} my age is {1}'.format('jason, 18'))
# 玩法3:根据指名道姓的方式取值
如: print('my name is {name} my age is {age} {pwd}'.format(name='jason', age=18, pwd=123))
# 玩法4:直接使用已经出现过的变量
如:name = 'jason' age = 18
print(f'my name is {name} my age is {age}')
5.拼接字符串
# s1 = '三月不努力,四月变垃圾'
# s2 = '年少不努力,枉为少年人'
# print(s1 + s2) # 如果字符串很大,加号效率很低
# print(s1 * 10) # 重复次数
# print('|'.join(s1)) # 三|月|不|努|力| |四|月|变|垃|圾
# print('$'.join(['jason','tony','tom'])) # jason$tony$tom
join方法相当于是将括号内的元素进行for循环
而且join的元素必须都是字符串才可以,否则会报错
6.替换字符串中指定的字符
# s1 = 'jason is DSB jason jason'
# 将jason替换成老刘
# print(s1.replace('jason','老刘')) # 默认一次性替换所有
# 还可以通过数字来控制替换的个数,从左往右
如:# prrint(s1,replace('jason','老刘',2))
# 很多文本编辑器里面的替换功能都可以使用replace完成
7.判断字符串中是否是纯数字
# s1 = 'jason123'
# print(s1.isdigit()) # False
# print('123'.isdigit()) # True
# print('123.21'.isdigit()) # False
# score = input('score>>>:')
if score.isdigit():
score = int(score)
else:
print('NTMD')
# 1.查找指定字符对应的索引值
如:s1 = 'jason justin tony tom'
print(s1.find('s'))
从左往右查找,找到一个结束
print(s1.find('k',1,9))
-1就是找不到,没有
print(s1.index('k',1,9))
找不到直接报错,不推荐使用
# 2.改变文本位置
如:name = 'tony'
# print(name.center(10,'-'))
---tony---- # 位置居中
# print(name.ljust(10,'*'))
tony****** #位置在前
# print(name.rjust(10,'$'))
$$$$$$tony # 位置在后
# print(name.zfill(10))
000000tony # z表示零
# 3.特殊符号:斜杠与一些英文字母的组合会产生特殊的含义
如:print('ja\tson\nke\avin')
# 如果想取消他们的特殊含义可以在字符串的前面加一个字母r
如:prrint(r'ja\tson\nke\avin')
# 4.captalize(首字母大写),swapcase(大小写翻转),title(每个单词的首字母大写)
# 用法:变量名.captalize(),变量名.swapcase(),变量名.title()
二、列表内置方法
# 1.类型转换
如:print(list(11))
# 不行
print(list(11.11))
# 不行
print(list('jason'))
# ['j','a','s','o','n']
print(list({'name': 'jason','pwd':123}))
# ['name','pwd']
print(list((11,22,33,44,55)))
# [11,22,33,44,55]
print(list({1,2,3,4,5}))
# [1,2,3,4,5]
print(list(True))
# 以上可以看出,list可以转换支持for循环的数据类型,可以被for循环的数据类型有:字符串、列表、字典、元组、集合
# 2.常见操作
如:name_list = ['jason','kevin','tony','tom','jerry']
# 2.1索引取值
Print(name_list[0])
Print(name_list[-1])
# 2.2 切片操作
print(name_list[1:4])
# ['kevin','tong','tom']
print(name_list[-4:-1])
# ['kevin','tong','tom']
print(name_list[-1:-4:-1])
# ['jerry', 'tom', 'tony']
# 2.3 间隔
print(name_list[0:4:1])
# ['jason', 'kevin', 'tony', 'tom']
print(name_list[0:4:2])
# ['jason', 'tony']
print(name_list[-1:-4:-1])
# ['jerry', 'tom', 'tony']
# 2.4 统计列表中的元素个数
print(len(name_list))
# 5
# 2.5 成员运算,最小单位是元素不是元素里面的单个字符
如:print('j' in name_list)
# False
print('jason' in name_list)
# True
# 2.6 列表添加元素的方式
# 2.6.1 尾部追加'单个'元素
如:name_list.append('老刘')
print(name_list)
# ['jason','kevin','tony','tom','jerry','老刘']
name_list.append([11,22,33])
print(name_list)
#['jason','kevin','tony','tom','jerry',[11,22,33]]
# 2.6.2 在指定的位置插入单个元素
如:name_list.insert(0,123)
print(name_list)
#[123'jason','kevin','tony','tom','jerry']
name_list.insert(2,'插个队')
print(name_list)
# ['jason','kevin', '插个队' 'tony','tom','jerry']
# 2.6.3 合并列表
如:name_list.extend([11,22,33,44,55])
print(name_list)
# ['jason','kevin','tony','tom','jerry',11,22,33,44,55]
# extend其实可以看成是for循环+append
# 就相当于:for i in [11,22,33,44,55]
# name_list.apeend(i)
# print(name_list)
2.7 删除元素
2.7.1 通用的删除方式
# del name_list[0]
# print(name_list)
2.7.2 指名道姓的直接删除某个元素
# print(name_list.remove('jerry')) # None
2.7.3 延迟删除
# print(name_list.pop()) 默认是尾部弹出
print(name_list)
# jerry
# print(name_list.pop(2)) 可以指定索引值
print(name_list)
# tony
2.8 修改列表元素
# print(id(name_list[0])) # 2614038082368
# name_list[0] = 'jasonDSB'
# print(id(name_list[0])) # 2614038926320
# print(name_list)
2.9 排序
如:ss = [44,77,99,11,22,33,88,66]
ss.sort() 默认是升序
# [11,22,33,44,66,77,88,99]
# ss.sort(reverse=True) 可以修改为降序
print(ss)
# [99,88,77,66,44,33,22,11]
2.90 翻转
# ss = [44,77,99,11,22,33,88,66]
# ss.reverse() # 前后颠倒
# print(ss)
# [66,88,33,22,11,99,77,44]
2.91 比较运算
# s1 = [11,22,33]
# s2 = [1,2,3,4,5,6,7,8]
# print(s1 > s2)
# True
列表在做比较的时候,其实比的是对索引位置上的元素
如:s1 = ['A','B','C'] 假设A>>>65
s2 = ['a'] 假设a>>>97
# print(s1 > s2)
# Fslse
ss = [44,77,99,11,22,33,88,66]
print(ss.index(99))
# 表示的是99这个数在列表中所处的索引位置
2.92 统计列表中某个元素出现的次数
l1 = [11,22,33,44,33,22,11,22,11,22,33,22,33,44,55,44,33]
# print(l1.count(11)) # 统计元素11出现的次数
# 3
l1.clear() # 清空列表
可变类型与不可变类型
# s1 = '$$$jason$$$'
# print(s1.strip('$'))
# jason 本身并没有修改,是产生了新的结果
# print(s1)
# $$$jason$$$
# s2 = [1,2,3]
# print(s2.extend([11,22,33,44,55]))
# None 空 显示不出来
# print(s2)
# [1,2,3,11,22,33,44,55]
'''
可变类型(列表):值改变,内存地址不变,修改的是本身
不可变类型(字符串):值改变,内存地址肯定变,修改过程产生了新的值
'''
# 如何查看变量的内存地址
# s2 = [1,2,3]
# print(id(s2)) # 2171184953160
# s2.append(11111111)
# print(id(s2)) # 2171184953160
# s1 = 'jason'
# print(idd(s1))
# res = s1.strip()
# print(res)
# print(s1,id(s1))
三、队列与堆栈
队列:先进先出,比如:超市排队结账,先来先走,符合队列的特征
堆栈:先进后出,比如:叠衣服,在按顺序放的时候,最先放的肯定在最下面,拿的时候最后拿出来,符合堆栈的特征。
# 使用列表模拟出队列与堆栈的特征
# 队列
# new_list = []
# 先进
# new_list.append(111)
# new_list.append(222)
# new_list.append(333)
# 先出
# for i in new_list:
# print(i)
#print(new_list.pop(0))
#print(new_list.pop(0))
#print(new_list.pop(0))
# 堆栈
new_list = []
# 先进
new_list.append(111)
new_list.append(222)
new_list.append(333)
# 后出
print(new_list.pop())
print(new_list.pop())
print(new_list.pop())