列表和元组
一、昨日内容回顾以及作业讲解
int str bool
str: s1 = '太白123abc'
• 索引:
s1[0]
s1[-1]
s1[:3]
s1[:5:2]
s1[-1:-4:-1]
s1[-1:-6:-2]
• 常用操作方法:
• upper lower 大小写转换
• startswith endswith 确认是否串是否以某字符开始或者结尾
• split 分割:str ---> list
• 默认按照空格
• 可以指定分隔符
• strip :默认去除字符串两边的空格、换行符、制表符
• isdecimal isalpha isalnum
• format 格式化输出
• count 某个袁术出现的次数
• join 连接
• replace 替换
• len() 获取数据的元素个数
• for循环
二、今日内容大纲
• 列表的初识
• 列表的索引切片
• 列表的增删改查
• 列表的嵌套
• 元组的初识(了解)
• 元组的简单应用(了解)
• range
1.列表的初识
• why : int bool str:‘123 True 太白’
• str : 存储少量的数据
• str:切片还是对其进行任何操作,获取的内容全都是str 类型,存储的数据单一
• what:list
• lis = [100, 'alex' ,True,[1,2,3]] 承载任意数据类型,存储大量的数据
• python常用的容器型数据类型。list 列表,其他语言:Java: 数组。
• 列表是有序的,可索引,切片(步长)。2. 索引、切片、步长
lis = [100, '太白',True,[1,2,3]] #索引 print(lis[0],type(lis[0])) print(lis[1],type(lis[1])) print(lis[2],type(lis[2])) print(lis[3],type(lis[3])) #切片 print(lis[:2]) #步长 print(lis[:-1:2]) 结果: D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py 100 <class 'int'> 太白 <class 'str'> True <class 'bool'> [1, 2, 3] <class 'list'> [100, '太白'] [100, True]
#相关练习题: li = [1, 3, 2, "a", 4, "b", 5,"c"] #通过对li列表的切片形成新的列表l1,l1 = [1,3,2] l1 = li[0:3] print(l1) #通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"] l2 = li[3:-2] print(l2) #通过对li列表的切片形成新的列表l3,l3 = [3,"a","b"] l3 = li[1:-2:2] print(l3) #通过对li列表的切片形成新的列表l4,l4 = ["b","a",3] l4 = li[-3:-8:-2] print(l4)
3.列表的增删改查
# 列表的创建 # 方式一 l1 = [1, 2, 'Alex'] print("l1",l1) # 方式二 l2 = list() print("l2:",l2) l3 = list('afagadgsd') print("l3",l3) # 方式三:列表推导式,后面讲 # 增删改查 # append 末尾增加 l1 = ['屌丝', '小白', '女神', '老师'] l1.append('大神') print(l1) # insert 指定索引位置插入 l1 = ['屌丝', '小白', '女神', '老师'] l1.insert(2,'test') print(l1) #extend 迭代着追加 l1 = ['屌丝', '小白', '女神', '老师'] l1.extend('test') print(l1) l1 = ['屌丝', '小白', '女神', '老师'] l1.extend([123,'test']) print(l1) # pop 按照索引位置删除 l1 = ['屌丝', '小白', '女神', '老师'] l1.pop(-2) print(l1) l1.pop() #默认删除最后一个 print(l1) # remove 指定删除元素,如果有重名元素,默认删除从左数第一个 l1 = ['屌丝', 'test', '小白', '女神', 'test', '老师', 'test'] l1.remove('test') print(l1) # clear 清空序列(了解) l1 = ['屌丝', '小白', '女神', '老师'] l1.clear() print(l1) #del 按照索引删除 l1 = ['屌丝', '小白', '女神', '老师','asfaf','agad'] del l1[2] print(l1) del l1[::2] # 按照切片步长删除 print(l1) # 改 # 按照索引改值 l1 = ['屌丝', '小白', '女神', '老师'] l1[0] = '男神' print(l1) #按照切片改 l1 = ['屌丝', '小白', '女神', '老师'] l1[2:] = 'afadgda' print(l1) #按照步长改 l1 = ['屌丝', '小白', '女神', '老师', 'test'] l1[::2] = 'abc' print(l1) #查 l1 = ['屌丝', '小白', '女神', '老师', 'test'] for i in l1: print(i)

4.列表的嵌套
l1 = [1, 2, 'taibai', [1, 'alex', 3,]] # 1, 将l1中的'taibai'变成大写并放回原处。 l1[2] = l1[2].upper() print(l1) # 2,给小列表[1,'alex',3,]追加一个元素,'老男孩教育'。 l1[3].append('老男孩教育') print(l1) # 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb l1[3][1] += 'sb' print(l1)
5.元组(了解)
只读列表。存大量的数据,可以索引,切片(步长), (100, '太白', True, [1, 2, 3])
tu = (100, '太白', True, [1, 2, 3]) tu[1] = 'aa' #不能修改 结果 D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py Traceback (most recent call last): File "D:\pythonProject\python3\day10\s1.py", line 2, in <module> tu[1] = 'aa' TypeError: 'tuple' object does not support item assignment tu = (100, '太白', True, [1, 2, 3]) tu[3][1] = 'aa' print(tu) 结果: D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py (100, '太白', True, [1, 'aa', 3])
6.range
类似于列表,自定制数字范围的数字列表
li = range(9) print(li) print(list(li)) for i in li: print(i) # 步长 for i in range(0,10,2): print(i) for i in range(10,1,-1): print(i)
7.列表常用的方法
count 统计元素在列表中出现的次数
lis = [1,2,3,12,1,2,3,456,1] print(lis.count(1))
lis = [1,2,3,12,1,2,3,456,1] print(lis.index(1))
sort (方法用于在原位置对列表进行排序)
lis = [1,2,3,12,1,2,3,456,1] lis.sort() print(lis) 结果: [1, 1, 1, 2, 2, 3, 3, 12, 456]
reverse (方法将列表中的元素反向存放)。
lis = [1,2,3,12,1,2,3,456,1] lis.reverse() print(lis) 结果: [1, 456, 3, 2, 1, 12, 3, 2, 1]
三、今日总结
1. 列表的所有的方法全部都要记住,背过(除去了解的)append insert extend pop remove del clear 。
2. 列表的嵌套一定要会。
练习题:
# Day03作业及默写 # 有变量name = " aleX leNb " 完成如下操作: name = "aleX leNb" # 移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip()) # 判断 name 变量是否以 "al" 开头,并输出结果 print(name.startswith('al')) # 判断name变量是否以"Nb"结尾,并输出结果 print(name.endswith('Nb')) # 将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果 print(name.replace('l','p')) # 将name变量对应的值中的第一个"l"替换成"p",并输出结果 print(name.replace('l','p',1)) # 将 name 变量对应的值根据 所有的"l" 分割,并输出结果。 print(name.split('l')) # 将name变量对应的值根据第一个"l"分割,并输出结果。 print(name.split('l',1)) # 将 name 变量对应的值变大写,并输出结果 print(name.upper()) # 将 name 变量对应的值变小写,并输出结果 print(name.lower()) # 判断name变量对应的值字母"l"出现几次,并输出结果 print(name.count('l')) # 如果判断name变量对应的值前四位"l"出现几次,并输出结果 print(name.count('l',0,3)) # 请输出 name 变量对应的值的第 2 个字符? print(name[1]) # 请输出 name 变量对应的值的前 3 个字符? print(name[:3]) # 请输出 name 变量对应的值的后 2 个字符? print(name[-2:]) # 2.有字符串s = "123a4b5c" s = "123a4b5c" # 通过对s切片形成新的字符串s1,s1 = "123" print(s[0:3]) # 通过对s切片形成新的字符串s2,s2 = "a4b" print(s[3:6]) # 通过对s切片形成新的字符串s3,s3 = "1345" print(s[:7:2]) # 通过对s切片形成字符串s4,s4 = "2ab" print(s[1:6:2]) # 通过对s切片形成字符串s5,s5 = "c" print(s[-1]) # 通过对s切片形成字符串s6,s6 = "ba2" print(s[-3:0:-2]) print(s[-3::-2]) # 使用while和for循环分别打印字符串s="asdfer"中每个元素。 s="asdfer" for i in s: print(i) # 使用for循环对s="asdfer"进行循环,但是每次打印的内容都是"asdfer"。 s = "asdfer" for i in s: print(s) # 使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb, 例如:asb, bsb,csb,...gsb。 s="abcdefg" for i in s: print(i + 'sb') # 使用for循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。 s = "321" for i in s: msg = "倒计时{0}秒" print(msg.format(i)) print("出发!") # 实现一个整数加法计算器(多个数相加): # 如:content = input("请输入内容:") 用户输入:5+9+6 +12+ 13,然后进行分割再进行计算。 # content = input("请输入内容:") # lis = content.split('+') # num_sum = 0 # for i in lis: # resut = int(i.strip()) # num_sum += resut # print("等于:",num_sum) # 计算用户输入的内容中有几个整数(以个位数为单位)。 # 如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla # content = input("请输入内容:") # cnt = 0 # for i in content: # if i.isdecimal(): # cnt += 1 # print("整数有:",cnt) # 选做题:写代码,完成下列需求: # 用户可持续输入(用while循环),用户使用的情况: # 输入A,则显示走大路回家,然后在让用户进一步选择: # 是选择公交车,还是步行? # 选择公交车,显示10分钟到家,并退出整个程序。 # 选择步行,显示20分钟到家,并退出整个程序。 # 输入B,则显示走小路回家,并退出整个程序。 # 输入C,则显示绕道回家,然后在让用户进一步选择: # 是选择游戏厅玩会,还是网吧? # 选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。 # 选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。 # while 1: # content = input("请输入回家方式(A/B/C):") # if content.upper() == 'A': # print("走大路回家") # vehicle = input("请输入交通工具(1/2):") # if int(vehicle) == 1: # print("选择公交车,显示10分钟到家") # break # else: # print("选择步行,显示20分钟到家") # break # elif content.upper() == 'B': # print("走小路回家") # break # else: # print("绕道回家") # msg = input("请输入游戏厅或者网吧(1/2):") # if int(msg) == 1: # print("选择游戏厅,一个半小时到家,爸爸在家,拿棍等你") # else: # print("选择网吧,两个小时到家,妈妈已做好了战斗准备") # **选做题:**判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海 ⾃来⽔来⾃海上 # content = input("请输入内容:") # if content == content[::-1]: # print("输入的内容是回文") # 制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx # name = input("请输入姓名:") # city = input("请输入地点:") # hobby = input("请输入爱好:") # msg = "敬爱可亲的{0},最喜欢在{1}地⽅⼲{2}" # print(msg.format(name,city,hobby))
# 1.写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] # 计算列表的长度并输出 #print(len(li)) # 列表中追加元素"seven",并输出添加后的列表 # li.append('seven') # print(li) # 请在列表的第1个位置插入元素"Tony",并输出添加后的列表 # li.insert(0,'Tony') # print(li) # 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表 # li[1] = 'Kelly' # print(li) # 请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。 # l2=[1,"a",3,4,"heart"] # li.extend(l2) # print(li) # 请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。 # s = "qwert" # li.extend(s) # print(li) # 请删除列表中的元素"ritian",并输出添加后的列表 # li.remove('ritian') # print(li) # 请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表 # li.pop(1) # print(li) # 请删除列表中的第2至4个元素,并输出删除元素后的列表 # del li[1:4] # print(li) # 2.写代码,有如下列表,利用切片实现每一个功能 li = [1, 3, 2, "a", 4, "b", 5,"c"] # 通过对li列表的切片形成新的列表l1,l1 = [1,3,2] # l1 = li[0:3] # print(l1) # 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"] # l2 = li[3:6] # print(l2) # 通过对li列表的切片形成新的列表l3,l3 = ["1,2,4,5] # l3 = li[::2] # print(l3) # 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"] # l4 = li[1:6:2] # print(l4) # 通过对li列表的切片形成新的列表l5,l5 = ["c"] # l5 = li[-1:] # print(l5) # 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3] # l6 = li[-3::-2] # print(l6) # 3.写代码,有如下列表,按照要求实现每一个功能。 lis = [2, 30, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] # 将列表lis中的"tt"变成大写(用两种方式)。 # lis[3][2][1][0] = lis[3][2][1][0].upper() # print(lis) # 将列表中的数字3变成字符串"100"(用两种方式)。 # lis[3][2][1][1] = str(lis[3][2][1][1] + 97) # print(lis) # 将列表中的字符串"1"变成数字101(用两种方式)。 # lis[3][2][1][2] = int(lis[3][2][1][2] + '01') # print(lis) # 4.请用代码实现: li = ["alex", "wusir", "taibai", 2] # 利用下划线将列表的每一个元素拼接成字符串"alex_wusir_taibai" # l1 = li[0:3] # print('_'.join(l1)) # 5.利用for循环和range打印出下面列表的索引。 # li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] # num = 0 # for i in li: # print(num) # num += 1 # 6.利用for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中。 # li = [] # for i in range(100): # if i % 2 == 0: # li.append(i) # print(li) # 7.利用for循环和range 找出50以内能被3整除的数,并将这些数插入到一个新列表中。 # li = [] # for i in range(50): # if i % 3 == 0: # li.append(i) # print(li) # 8.利用for循环和range从100~1,倒序打印。 # for i in range(100,0,-1): # print(i) # 9.利用for循环和range从100~10,倒序将所有的偶数添加到一个新列表中,然后对列表的元素进行筛选,将能被4整除的数留下来。 # li = [] # for i in range(100,9,-1): # if i % 2 ==0: # li.append(i) # for i in li: # if i % 4 != 0: # li.remove(i) # print(li) # 10.利用for循环和range,将1-30的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成*。 # li = list(range(1,31)) # for i in range(len(li)): # if li[i] % 3 == 0: # li[i] = '*' # print(li) # 11.查找列表li中的元素,移除每个(for)元素的空格 strip, # 并找出以"A"或者"a"开头startswith,并以"c"结尾的所有元素 endswith,并添加到一个新列表new_l = []中,最后循环for 打印这个新列表。 # li = ["TaiBai ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc", 'a c', 'adfdfdgdc'] # new_l = [] # for i in range(len(li)): # li[i] = li[i].strip() # if li[i].upper().startswith('A') and li[i].endswith('c'): # new_l.append(li[i]) # print(new_l) # for i in new_l: # print(i) # 12.开发敏感词语过滤程序,提示用户输入input评论内容,如果用户输入的内容中包含特殊的字符: # 敏感词列表 li = ["苍老师", "东京热", "武藤兰", "波多野结衣"] # 则将用户输入的内容中的敏感词汇替换成等长度的*(苍老师就替换***),并添加到一个列表中; # 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。 # li = ["苍老师", "东京热", "武藤兰", "波多野结衣"] # comment = input("请输入评论内容:") # comment_lis = [] # for i in li: # if i in comment: # comment = comment.replace(i,'*' * len(i)) # comment_lis.append(comment) # print(comment_lis) # 13.有如下列表(选做题) # li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] # # 循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。 # for i in li: # if type(i) == list: # for j in i: # print(j) # else: # print(i) # 明日默写内容 # 将列表的增删改查不同的方法全部写出来, # 增: # append 在末尾增加 # insert 根据索引增加 # extend 迭代着增加 # 删: # pop 根据索引删除,默认最后以为 # remove 根据元素删除,删除首个 # del 更加索引或者切片删除 # 改: 直接根据切片或者所有修改 # 查: 直接根据切片或者所有修改 # 例如:增:有三种,append:在后面添加。Insert按照索引添加, # expend:迭代着添加。
浙公网安备 33010602011771号