字符串和列表的内置方法、可变类型与不可变类型和队列与堆栈
今日总结
-
字符串的其他内置方法
-
必须了解操作
-
列表的内置方法
-
可变类型与不可变类型
-
队列与堆栈
字符串的其他内置方法
1 、移除字符串首尾的指定字符,可以自定义移除的方向
strip(移除用语)
rstrip(右边移除)
lstrip(左边移除)
用法:
# s1 = '***owen***'
# print(s1.strip('*')) # owen
# print(s1.rstrip('*')) # ***owen
# print(s1.lstrip('*')) # owen***

2 、大小写相关操作
lower——改成小写
upper——改成大写
用法:
# l1 = 'OweN123OH'
# print(l1.lower()) # 将所有的英文字母改成小写 owen123oh
# print(l1.upper()) # 将所有的英文字母改成大写OWEN123OH
# print(l1.islower()) # 判断字符串中所有英文字母是不是都小写 结果显示为false-布尔值
# print(l1.isupper()) # 判断字符中所有的英文字母是不是都大写 结果显示为false——布尔值

课时补充:图片验证码,之前都必须一模一样,现在却不用
# code = 'OwEn2' # 定义一个验证码
# print('图片验证码:%s' % code) # 提示用户验证码
# user_code = input('请输入验证码>>>:').strip() # 给获取到的变量定义一个变量名,并去除首尾空格字符
# if code.lower() == user_code.lower():
# print('验证码正确')

3 、判断字符的开头或者结尾是否是指定的字符
startswith——开头处
endswith——结尾处
用法:
l1 = 'lili owen jery kevin 123'
print(l1.startswith('l')) # 判断'l'在不在字符串中的开头
print(l1.startswith('lili')) # 判断'lili'在不在字符串的开头
print(l1.startswith('owen')) # 判断'owen'在不在字符串的开头
print(l1.endswith('3')) # 判断'3'在不在字符串的结尾
print(l1.endswith('123')) # 判断'123'在不在字符串的末尾
print(l1.endswith('jery')) # 判断'jery'在不在字符串的末尾

4 、格式化输出
方式1:占位符:%s %d

方式2:
format方法有四种使用方法
方法1:和占位符一样,使用{}占位
print('my name is {} my age is {}'.format('owen', 20))

方法2:根据索引取值,可以反复的使用 ,并且可以改变取值的内容
print('my name is {0} {1} my age is {1} {0}'.format('owen',20))

方法3:根据指名道姓的方式取值
print('my name is {name} my age is {age}'.format(name='owen', age=30))

方法4、直接使用已经出现过的变量
name = 'owen'
age = 20
print(f'my name is {name} my age is {age}{age}')

5 、拼接字符串
join——拼接
l1 = '锄禾日当午 上班好幸苦'
l2 = '为了盘中餐 汗水都流干'
print('|'.join(l2)) # 为|了|盘|中|餐| |汗|水|都|流|干
#####
print('|'.join(['owen','wuhua','tony'])) # owen|wuhua|tony
print('|'.join(['owen','wuhua','tony', 22])) # 报错
# join的元素都必须是字符串才可以,否则就会报错

6 、替换字符串中指定的字符
replace——替换字符
用法:
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony')) # 将Owen替换成tony
默认一次性替换完

也可以指定替换的个数
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony',1)) # 指定替换其中一个,从左往右

7 、判断字符串中是否为纯数字
isdigit——是否数字
用法:
l1 = 'owen111'
l2 = '123'
print(l1.isdigit()) # false
print(l2.isdigit()) # true
# 判断用户输入的字符串是否为纯数字
score = input('score>>>:').strip() # 获取用户输入,并移除首尾空格
if score.isdigit(): # 如果字符串为纯数字
score = int(score) # 字符串为整数
print('还不错哦') # 打印还不错哦
else: # 否则
print('再不好好写,给你一皮锤')

了解操作
1 、查找指定字符对应的索引值
find、index(找不到值时直接报错,不推荐使用)
用法:
l1 = 'owen mark zhuli xiaohua'
print(l1.find('o')) # 结果为0,从左往右开始查找,找到第一个o就停止
print(l1.find('n',0,2)) # 结果为-1(意思就是找不到)
print(l1.index('m', 1, 4)) # 找不到直接报错 不推荐使用

2 、文本位置改变
center——文本居中
ljust——文本左对齐
rjust——文本右对齐
zfill——文本前面自动填充零,文本右对齐
name = 'owen'
print(name.center(20,'*')) # 结果为********owen********
print(name.ljust(20,'*')) # 结果为 owen****************
print(name.rjust(20,'*')) # 结果为****************owen
print(name.zfill(10)) # 结果为000000owen
3 、特殊符号:斜杠与一些英文字母的组合会产生特殊的 含义
\n ——行分隔符、\t——元素分隔.....
print('ow\nen') | print('ow\ten')
# 如果想取消它们的特殊含义,,可以在字符串前面加r
print('ow\nen') | print('ow\ten') |
---|---|
ow (第一行) | ow en |
en (第二行) |
4 、captalize , swapcase , title
captalize——首字母大写
message = 'nice to meet you!' print(message.capitalize()) # Nice to meet you!
swapcase——大小写翻转
message = 'Have a good time'
print(message.swapcase()) # hAVE A GOOD TIME
title——让每个单词的首字母大写
message = 'Have a good time'
print(message.title()) # Have A Good Time
列表内置方法
1 、类型转换
list可以转换支持for循环的数据类型
可以被for循环的数据类型:字符串 列表 字典 元组 集合
print(list(123)) # 报错
print(list(13.14)) # 报错
print(list('owen')) # ['o', 'w', 'e', 'n']
print(list({'name': 'owen', 'age': 20})) # ['name', 'age']
print(list((11,22,33,44,55))) # [11, 22, 33, 44, 55]
print(list({0,9,8,7})) # [0, 9, 8, 7]
print(list(True)) # 报错
2 、常见操作
name_list = ['owen','kary','sendy','dancy']
1、 索引取值
print(name_list[0]) # 结果为'owen'
2、 切片操作
print(name_list[-3:-1]) # 结果为['kary', 'sendy']
3、 间隔
print(name_list[0:4:1]) # ['owen', 'kary', 'sendy', 'dancy']
print(name_list[0:4:3]) # ['owen', 'dancy']
4、 统计列表中元素的个数(len)
print(len(name_list)) # 结果为4
5、成员运算,最小判断单位是元素不是元素里的单个字符
print('o' in name_list) # 结果为False
print('owen' in name_list) # 结果为True
6、列表增加元素的方法
6.1、尾部追加'单个'元素(使用append)
name_list.append('小王')
print(name_list)
# 结果为 ['owen', 'kary', 'sendy', 'dancy', '小王']
6.2、指定位置插入'单个'元素(使用insert)
name_list.insert(0, '呜呼')
print(name_list)
# 结果为 ['呜呼', 'owen', 'kary', 'sendy', 'dancy']
6.3、合并列表(使用extend)
name_list.extend([123,456,789])
print(name_list)
# 结果为['owen', 'kary', 'sendy', 'dancy', 123, 456, 789]
""" extend可以看成是for循环+append """
7、删除元素
7.1 通用的删除方式(del)
del name_list[0]
print(name_list) # 结果为['kary', 'sendy', 'dancy']
7.2 就地删除(remove) # 点名要直接删除某个元素
name_list.remove('kary')
print(name_list) # 结果为['owen', 'sendy', 'dancy']
7.3 延迟删除(pop)
print(name_list.pop()) # 结果为dancy,默认是尾部弹出
print(name_list.pop(2)) # 结果为sendy,可以指定索引值
8、修改列表元素(id)
print(id(name_list[1])) # 结果为2488639686192
name_list[1] = 'owen123'
print(id(name_list[1])) # 结果为2488639686192
# 修改列表元素的地址还是一样的
9、排序(sort)
l1 = [66,77,44,99,55,88]
l1.sort()
print(l1) # 结果显示为[44, 55, 66, 77, 88, 99] 默认为升序
l1.sort(reverse=True) # 修改为降序
print(l1) # [99, 88, 77, 66, 55, 44]
10、翻转(reverse)
l1 = [66,77,44,99,55,88]
l1.reverse() # 使列表元素前后翻转
print(l1) # 结果为[88, 55, 99, 44, 77, 66]
11、比较运算
l1 = [11, 22, 33]
l2 = [1, 2, 3, 4, 5, 6, 7, 8]
print(l1 > l2) # 结果为True
'''列表之间作比较,其实比的就饿死对应索引位置上的元 素'''
12、统计列表中某个元素出现的次数(count)
l1 = [11,33,44,77,88,5,88,99,22,11]
print(l1.count(11)) # 统计元素11出现的次数 结果为2
可变类型与不可变类型
'''
可变类型与不可变类型
可变类型——列表
值改变 内存地址不变 修改的是本身
不可变类型——字符串
值改变 内存地址肯定变因为 修改过程产生了新的值
'''
l1 = '***owen***'
print(l1.strip('*')) # 结果为 owen
print(l1) # 结果为***owen***
''' 变量没有发生改变,只是产生一个新结果 '''
l2 = [1, 2, 3]
l2.extend([11, 22, 33, 44, 55]) # 结果为None
print(l2) # 结果为[1, 2, 3, 11, 22, 33, 44, 55]
队列与堆栈
队列:
先进先出 ,就像先排队的先买到饭先走
new_list = []
# 先进
new_list.append(1)
new_list.append(2)
new_list.append(3)
# 先出
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())
