day04
二、列表的操作
2.1:列表的索引与切片
l1 = ['一帆', 100, 'py', 'code', 'wyf', 'students', 'teacher'] 1,列表的索引 ret = l1[0] ret1 = l1[1] print(ret1,type(ret1)) print(l1[-1]) print(l1[-2]) 2,切片: 顾头不顾尾 print(l1[:4]) print(l1[:5:2]) 倒叙取值 print(l1[-1:-4:-1])
2.2:列表的常用操作:
增 删 改 查
l1 = ['一帆', 100, 'py', 'code', 'wyf', 'students', 'teacher'] 增: 3,append 追加
l1.append('yifan') l1.append(100) l1.append([1, 2, 3]) print(l1) 4,insert 插入 l1.insert(1,'小潘') 5,extend 迭代着追加 l1.extend('alex') l1.extend(['肖锋', 666])
删 6,pop 按照索引删除,会将删除的元素作为返回值返回 ret = l1.pop(0) print(ret) 7,remove 按照元素删除 ret = l1.remove('武大') print(ret) 8,clear 清空列表 l1.clear() 9,del 1,按照索引删除 2,按照切片(可以加步长)删除 3,删除整个列表 del l1[-2] del l1[1:] del l1[::2] del l1
改
10,改某个元素
print(l1[0]) l1[0] = '男神'
切片改 l1[:3] = 'abc' l1[:3] = 'abcdefghigk'
切片(步长) 改 必须一一对应 l1[1:4:2] = 'a' l1[1:4:2] = 'a2' l1[1:4:2] = [1,2,3] # 错误
查 11,按照索引,按照切片(步长查询)
for 循环 for i in l1: print(i) print(l1)
其他方法: l1 = ['一帆', '小白', '张老师', '一帆', '一帆'] 12,len print(len(l1)) # 获取列表的长度(总个数)
13,count 计算某个元素出现的次数 print(l1.count('一帆'))
14,index 通过元素找索引,找到第一个就返回,找不到就报错 print(l1.index('小白')) print(l1.index('一帆')) print(l1.index('一帆1'))
l1 = [4, 5, 3, 9, 8, 7, 6, 1] 15,sort 从小到大排序 l1.sort() l1.sort(reverse=True) # 从大到小 l1.reverse() # 反转 print(l1)
二、列表的嵌套
l1 = [1, 2, 'yifan', [1, 'wang', 3,]] ''' 1, 将l1中的'yifan'变成大写并放回原处。 2,给小列表[1,'wang',3,]追加一个元素,'ppts'。 3,将列表中的'wang'通过字符串拼接的方式在列表中变成'wangsd' '''
1 print(l1[2]) print(l1[2].upper()) l1[2] = l1[2].upper() print(l1) 2 print(l1[-1]) small_l = l1[-1] small_l.append('ppts') print(l1) 3 print(l1[-1][1]) print(l1[-1][1] + 'sd') l1[-1][1] = l1[-1][1] + 'sd' # l1[-1][1] += 'sd' print(l1)
三、元组
可索引,切片 print(tu1[1]) print(tu1[:3]) 元组只能查不能改 索引,切片(步长) 查询
for i in tu1: print(i) print(len(tu1)) print(tu1.count('alex')) print(tu1.index('alex')) 可以删除元组 del tu1 print(tu1) 元组 只是不能修改第一层, tu1 = (1, 'alex', [1,2,3], True, (1,2,3)) 儿子不能改,孙子可能改。 tu1[2].append('小白') tu1.append(666) print(tu1)
四、range :可控制范围的数字列表
range(1,10) # 顾头不顾尾 print(range(1,10)) for i in range(1,10): print(i)
1 ~ 100 for i in range(1,101): print(i)
for i in range(2, 101, 2): print(i)
10 ~ 1 for i in range(10, 0, -1): print(i)
for i in range(10): print(i)
# 应用: # range多与for循环配合。 l1 = ['yifan', 'wang', '小白', 100, 1, 2, 3] for i in range(len(l1)): print(i)
补充知识点
补充知识点: 1.查看一个类中所有的可用方法: [x for x in dir(str) if not x.startswith('_')] sorted([x for x in dir(str) if not x.startswith('_')]) 2.str类中find,index的区别 3.判断开始或者结束字符串的注意事项: startswith: endswith: 判断一个文件,是否是jpg格式的图片? filename后缀有可能大写和小写混用,所以要先统一一下。统一成大写或者小写都可以。 伪代码: if filename.lower().endswith('.jpg'): ok 4.切片操作总结: 格式: [起始值:结束值:顺序和步长] 1.切片的顺序取决于最后一个参数,正数:正序;负数:倒序,默认是正序 2.正序时起始值在结束值右侧,或者倒序时起始值在结束值左侧,都会返回空字符串。 s = 'Hello' s[3:2:2] -> '' s[1:3:-2] -> '' 即:切片不会跨越字符串的首尾。 3.正数索引和负数索引可以混用。只要能指到正确的元素即可。 5.总结str类中涉及到从右侧开始的操作: rfind 从右侧查找 rindex 从右侧查找 rjust 从右侧对齐 rstrip 从右侧删除空白字符 rsplit 从右侧切分 rpartition 从右侧分组