字符串,列表的内置方法
1. 字符串的内置方法(熟练掌握)
1.1 去除字符串的首尾指定字符
name = '@@@@@王五@@@@@' # 1. strip # 去除首尾指定字符 name1 = name.strip('@') print(name1) # >>>王五 # 2. rstrip # 去除末尾的指定字符 name1 = name.rstrip('@') print(name1) # >>>@@@@@王五 # 3. lstrip # 去除开头的指定字符 name1 = name.lstrip('@') print(name1) # >>>王五@@@@@
1.2 大小写相关操作
name = 'NamE' # 1. lower # 将所有的英文字母变为小写 name1 = name.lower() print(name1) # >>>name # 2. upper # 将所有的英文字母变为大写 name1 = name.rstrip('@') print(name1) # >>>NAME # 3. islower # 判断字符串中所有的英文字母是否是纯小写 结果是布尔值 name1 = name.islower() print(name1) # >>>False # 4. isupper # 判断字符串中所有的英文字母是否是纯大写 结果是布尔值 name1 = name.isupper() print(name1) # >>>False
1.3 判断字符串的开头或者结尾是否是指定的字符
name = 'NamE' # 1. startswith # 断字符串的开头是否是指定的字符 print(name.startswith('N')) # >>>True print(name.startswith('n')) # >>>False # 2. endswith # 断字符串的结尾是否是指定的字符 print(name.endswith('E')) # >>>True print(name.endswith('e')) # >>>False
1.4 格式化输出
# 方式1 占位符:%s %d print('my name is %s' % ('李四')) # >>>my name is 李四 # 方式2 format方法>>>:有四种写法 # 玩法1:使用的{}占位 print('my name is {} '.format('李四')) # >>>my name is 李四 # 玩法2:根据索引取值 可以反复使用 print('my name is {0} {0}'.format('李四')) # >>>my name is 李四 李四 # 玩法3:根据变量名进行占位 print('my name is {name} {name}'.format(name='李四')) # >>>my name is 李四 李四 # 玩法4:直接使用已经定义好的变量 name = '李四' # print(f'my name is {name} {name} ') # >>>my name is 李四 李四
1.5 拼接字符串
# 1. 用+号拼接 name1 = '三月不努力' name2 = '四月变垃圾' print(name1 + name2) # >>>'三月不努力四月变垃圾' # 如果字符串很大 加号效率较低 # 2. 用join拼接 print('@'.join(name1)) # >>>'三@月@不@努@力' print('$'.join(['jason', 'kevin', 'justin', 'tony'])) # >>>'jason$kevin$justin$tony' '''join方法相当于是将括号内的元素进行for循环''' l1 = [11, '三月不努力', '四月变垃圾'] print('|'.join(l1)) # >>>报错 # join的元素必须都是字符串才可以 否则报错
1.6 替换字符串中指定的字符
name = 'lisi lisi lisi wangwu' # 将lisi替换成666 print(name.replace('lisi', '666')) # >>>666 666 666 wangwu # 默认一次性替换所有 # 指定替换的个数 print(name.replace('lisi', '666', 2)) # >>>666 666 lisi wangwu # 还可以通过数字控制替换的个数 从左往右
1.7 判断字符串中是否是纯数字
name = '123' name2 = 'l123' print(name.isdigit()) # >>>True print(name2.isdigit()) # >>>False # 当使用isdigit时,返回True则为纯数字,返回False则不为纯数字

2. 字符串的内置方法(了解即可)
2.1 查找指定字符对应的索引值
name = '12356789999999999999990' # 1. 使用find方法进行寻找索引 print(name.find('9')) # >>>7 # 从左往右查找 查找一个就结束 print(name.find('0', 1, 9)) # >>>-1 # -1 意思是没有 找不到 当find第二个与第三个数字则表示find查找的索引范围 第二个数字为起始位置 第三个数字为结束位置 # 2. 使用index方法进行寻找索引 print(name.index('9')) # >>>7 # 与find方法一样是从左往右查找 查找一个就结束 print(name.find('0', 1, 9)) # >>>报错 # 当index方法在查找范围内,查找不到时,就会报错 # 因为会发生报错,所以不推荐使用
2.2 使用方法来改变文本位置
name = '王五' print(name.center(30, '-')) # >>>--------------王五--------------
# 使用center方法会把字符串放到中间,左右两边用center第二位字符串进行填充,字符串一共的长度,由第一个数字决定 print(name.ljust(30, '*')) # >>>王五****************************
# 使用ljust方法会把字符串放到左边,右边用ljust第二位字符串进行填充,字符串一共的长度,由第一个数字决定 print(name.rjust(30, '$')) # >>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$王五
# 使用rjust方法会把字符串放到右边,左边用rjust第二位字符串进行填充,字符串一共的长度,由第一个数字决定 print(name.zfill(30)) # >>>0000000000000000000000000000王五
# 使用zfill方法会把字符串放到右边,左边用0进行填充,字符串一共的长度,由第一个数字决定
2.3 特殊符号:斜杠与一些英文字母的组合会产生特殊的含义
print('ja\tson\nke\avin') # >>>ja son # >>>kevin # \t 为四个空格 # \n 为换行 # \a 为 # 如果想取消它们的特殊含义 可以在字符串的前面加一个字母r print(r'ja\tson\nke\avin') >>>ja\tson\nke\avin
2.4 captalize,swapcase,title
# 1 captalize:首字母大写 message = 'hello everyone nice to meet you!' print(message.capitalize()) # >>>Hello everyone nice to meet you! # 2 swapcase:大小写翻转 # message1 = 'Hi girl, I want make friends with you!' print(message1.swapcase()) # >>>hI GIRL, i WANT MAKE FRIENDS WITH YOU! #3 title:每个单词的首字母大写 # msg = 'dear my friend i miss you very much' print(msg.title()) # >>>Dear My Friend I Miss You Very Much

3.
""" list可以转换支持for循环的数据类型 可以被for循环的数据类型 字符串 列表 字典 元组 集合 """ # 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)) # >>>报错 # 2.常见操作 name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] # 1.索引取值 print(name_list[0]) # >>>jason print(name_list[-1]) # >>>jason # 3.切片操作 print(name_list[1:4]) # >>>['kevin', 'tony', 'tom'] print(name_list[-4:-1]) # >>>['kevin', 'tony', 'tom'] print(name_list[-1:-4:-1]) # >>>['jerry', 'tom', 'tony'] # 4.间隔 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'] # 5.统计列表中元素的个数 print(len(name_list)) # >>>5 # 6.成员运算 最小判断单位是元素不是元素里面的单个字符 print('j' in name_list) # >>>False print('jason' in name_list) # >>>True # 7.列表添加元素的方式 # 7.1.尾部追加'单个'元素 name_list.append('小李') print(name_list) # >>>['jason', 'kevin', 'tony', 'tom', 'jerry', '小李'] name_list.append([11, 22, 33, 44]) print(name_list) # >>>['jason', 'kevin', 'tony', 'tom', 'jerry', [11, 22, 33, 44]] # 7.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'] name_list.insert(1, [11, 22, 33]) print(name_list) # >>>['jason', [11, 22, 33], 'kevin', 'tony', 'tom', 'jerry'] # 7.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.append(i) print(name_list) # >>>['jason', 'kevin', 'tony', 'tom', 'jerry', 11, 22, 33, 44, 55] name_list += [11, 22, 33, 44, 55] print(name_list) # 加号的效率不高 # >>>['jason', 'kevin', 'tony', 'tom', 'jerry', 11, 22, 33, 44, 55] # 8.删除元素 # 8.1 通用的删除方式 del name_list[0] print(name_list) # >>>['kevin', 'tony', 'tom', 'jerry'] # >>>['jason', 'kevin', 'tony', 'tom', 'jerry'] # 8.2 就地删除 # 指名道姓的直接删除某个元素 print(name_list.remove('jerry')) # None print(name_list) # >>>['jason', 'kevin', 'tony', 'tom'] # 8.3 延迟删除 print(name_list.pop()) # 默认是尾部弹出 jerry print(name_list) # >>>['jason', 'kevin', 'tony', 'tom'] print(name_list.pop(2)) # 还可以指定索引值 tony print(name_list) # >>>['jason', 'kevin', 'tom', 'jerry'] # 9.修改列表元素 print(id(name_list[0])) # 2614035215215 name_list[0] = 'tank' print(id(name_list[0])) # 2614035215215 print(name_list) # >>>['tank', 'kevin', 'tony', 'tom', 'jerry'] # 10.排序 index_list = [44, 77, 99, 11, 22, 33, 88, 66] index_list.sort() # 默认是升序 print(index_list) # >>>[11, 22, 33, 44, 66, 77, 88, 99] index_list.sort(reverse=True) # 可以修改尾降序 print(index_list) # >>>[99, 88, 77, 66, 44, 33, 22, 11] # 11.翻转 index_list = [44, 77, 99, 11, 22, 33, 88, 66] index_list.reverse() # 前后颠倒 print(index_list) # >>>[66, 88, 33, 22, 11, 99, 77, 44] # 12.比较运算 index_list = [11, 22, 33] num_list = [1, 2, 3, 4, 5, 6, 7, 8] print(index_list > num_list) # >>>True """列表在做比较的时候 其实比的是对应索引位置上的元素""" # 13.统计列表中某个元素出现的次数 index_list = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33, 11, 22, 11] print(index_list.count(11)) # 统计元素11出现的次数 # >>>5 # 14. 清空列表所有元素 index_list.clear() # 清空列表 print(index_list) # >>>[]
4.
name = '$$$王五$$$' name2 = name.strip('$') print(name) # >>>$$$王五$$$ print(name2) # >>>王五 # 字符串本身并没有修改 是产生了新的结果 index_list = [1, 2, 3] num_list = index_list.extend([11, 22, 33, 44, 55]) print(num_list) # >>>None 空 print(index_list) # >>>[1, 2, 3, 11, 22, 33, 44, 55] # 列表是直接在其本身进行修改的 """ 可变类型与不可变类型 可变类型 列表 值改变 内存地址不变 修改的是本身 不可变类型 字符串 值改变 内存地址肯定遍 修改过程产生了新的值 如何查看变量的'内存地址' """ index_list = [1, 2, 3] print(id(index_list)) # >>>2171151255215 index_list.append(123) print(id(index_list)) # >>>2171151255215 name = ' 王五 ' print(id(name)) # >>>1502669300720 res = name.strip() print(res) # >>>王五 print(id(name)) # >>>1502669300720

5. 队列与堆栈
# 队列 # 先进先出 # 如:超市排队结账 符合队列的特征 # 堆栈 # 先进后出 # 如:叠衣服 符合堆栈的特征 # 使用列表模拟出队列与堆栈的特征 # 队列 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(1) new_list.append(2) new_list.append(3) # 后出 print(new_list.pop()) print(new_list.pop()) print(new_list.pop())


浙公网安备 33010602011771号