字符串的相关应用场景
王者荣耀脏话用语屏蔽
-
步骤
- 人为收集脏话的数据集
- 检测一句话中有没有与已有脏话列表中的相同元素
- jieba分词模块: 对用户输入的话语做切分,将切分出来的每个部分对脏话数据集做成员运算
- 脏话的替换*
data = ['菜鸡', '辣鸡', '卧槽', '臣卜木曹'] str1 = '你别玩了,可真是个菜鸡' cutList = ['你', '别', '玩了', '可', '真是', '个', '辣鸡'] result = ['*' * len[i] if i in data else i for i in cutList] print(result) # 输出的结果为列表 print(''.join(result)) # 将列表连成一句话
字符串结尾
-
ljust、rjust、center
# 练习 - 设置学号:python001,python002,python999 for i in range(1, 1000): print('python' + f'{i}'.rjust(3, '0'))
-
判断回文数
# 练习 - 判断一个数是否是回文数 # 回文数:1234321、45654、123321等 num = input('请输入一个数: ') if str(num) == str(num)[-1::-1]: print(f'{num}是回文数') else: print(f'{num}不是回文数')
元组
-
元组的性质和列表相似
- 容器符号: ( ); 数据类型: tuple
- 有序的容器型数据类型 ( 下标 )
- 不可变数据类型 ( 没有增删改 )
- 可以储存任意类型数据
-
元组的拼接、重复、比较大小、成员运算和列表一模一样
t1 = tuple() t2 = (1, 2, 3, (1, 2)) print(t1 + t2) # 合并空字符串,结果不变 print(t2 * 2) # 将t2元组重复打印
-
元组的循环遍历也与字符串一样
for i in t2: # 直接获取 print(i) for i in range(len(t2)): # 简介获取 print(t2[i])
-
打包和解包
# 在python中,一个变量可以被赋予多个值,这些值会被组成元组再赋给这个变量 a = 10, 20, 30, 40 print(a)
-
解包 - 将一个容器中的数值拆分,再分给多个变量
# 解包分为三种情况: # 一种为变量数量和容器中的数据个数相同 x_1, x_2, x_3, x_4 = a print(x_1, x_2, x_3, x_4) # 输出结果为10 20 30 40 # 第二种为变量数量多于容器元素数 (不定长参数) x, *y = a print(x, y) # 输出结果为10 [20, 30, 40] x, *y, z = a print(x, y, z) # 输出结果为10 [20, 30] 40 # 第三种为变量数量少于容器元素数 (不定长参数) *m, n, x = (10, 20) print(m, n, x) # 输出结果为[] 10 20 *m, n, *x, y = (10, 20) # 一次解包只能有一个不定长参数 print(m, n, x, y) # 注意:一次解包只能有一个不定长参数,超出会报错
-
创建元组
# 创建空元组 t1 = () t2 = tuple() # 创建一元组(元素个数为1) t3 = (3) # t3类型为int t4 = (3, ) # t4类型为元组 # 创建多元组 t5 = (1, 2)
-
Python中多个变量交换值
a = 20 b = 30 c = 40 a, b = b, a a, b, c = b, a, c print(a, b, c) # 输出结果为20 30 40
-
元组的sum、max、min、count、index、sorted用法和列表一样
集合
-
性质
- 容器符号: { },类型: set
- 无序的数据类型( 没有下标 )
- 可变数据类型( 只有增删 )
- 集合中只能存放不可变数据类型( 例如数字、字符串、元素等不可变的数据 )
-
集合的创建
# 创建空集合 s1 = set() print(s1, type(s1)) # 输出结果为set() <class 'set'> s2 = {10, 10.5, True, None, 'abcde', (1, 2, 3)} print(s2) # 输出结果为{True, 10.5, 'abcde', None, 10, (1, 2, 3)} -- 无序
-
集合的运算
# 集合的运算有4种:交、并、差、对称差 a = {1, 3, 5, 7, 9} b = {1, 2, 3, 4, 5} # 交集 & print(a & b) # 输出结果为{1, 3, 5} # 并集 | print(a | b) # 输出结果为{1, 2, 3, 4, 5, 7, 9} # 差集 - print(a - b) # 输出结果为{9, 7} print(b - a) # 输出结果为{2, 4} # 对称差 ^ print(a ^ b) # 输出结果为{2, 4, 7, 9}
-
集合的性质
- 确定性 - 一个元素,只有在集合中和不在集合中两种可能
- 互异性 - 一个集合中不会出现重复元素
- 无序性 - 元素没有固定位置
-
用元组给列表去重
list1 = [1, 2, 3, 4, 3, 2, 1] list2 = list(set(list1)) print(list2) # 输出结果为[1, 2, 3, 4] s3 = {1, 2, 3, 4, 3, 2, 1} print(s3) # 输出结果为{1, 2, 3, 4} print(set('hello')) # 输出结果为{'e', 'l', 'h', 'o'}
-
对集合进行遍历
for i in s3: print(i) # 输出结果为 1 2 3 4
-
成员运算
print(3 in s3) # 输出结果为True
集合的增删
-
增
# add - 向集合中添加元素 # update - 从一个容器中将所有元素添加到集合中 s1 = set() s1.add(1) s1.add('abc') print(s1) # 输出结果为{1, 'abc'} s1.update('hello') print(s1) # 输出结果为{1, 'abc', 'o', 'l', 'e', 'h'}
-
删
# discard - 删除某个指定的元素,重复删除不会报错 # remove - 删除某个指定的元素,重复删除会报错 # pop - 删除集合中的第一个元素(不常用) # clear - 清空集合 s1.discard(1) s1.remove('abc') print(s1) # 输出结果为{'o', 'l', 'e', 'h'} print(s1.pop()) # 输出结果为o s1.clear() print(s1) # 输出结果为set()
-
集合推导式 --> 将列表推导式的[ ] 换成 { }