python中关于列表和元祖的基础知识
一,列表
1)定义:
[]内以逗号分隔,按照索引,存放各种数据类型,每一个位置代表一个元素
2)特性:
1 可存放多个值 2 按照从左到右的顺序定义列表元素,下标为零开始顺序访问,有序 3可修改指定索引位置对应的值,是可变的,
3)列表的操作和字符串一样
1,切片是和字符串一样的
#例1 lst=["猪八戒","孙悟空","唐僧","沙僧",["观音","如来","蓝灯","十八罗汉",["太上老君","太白金星","哪吒","木吒","金吒"]]] print(lst[3]) print(lst[4][4][3]) print(lst[4][4][2:5:2]) print(lst[::-2]) print(lst[::-1]) #例2 lst = ["华仔", \'赫本\', \'赵四\', "孙艺珍", \'车太贤\'] print(lst[3][1]) # 索引拿到的是元素 print(lst[-3]) print(lst[1:3]) # 切片也一样 print(lst[::-2]) # 反着切也OK
2.列表的增删改查
#_1新增 lst = ["西红柿首富","无双", "影", "超能泰坦"] print(lst.append("123")) # 可变的数据类型 没有返回值 # 追加。 添加到末尾(重点) lst.append("找到你") lst.append("鬼子来了") lst.append("前任4") print(lst) # 插入 lst.insert(0, "建国大业") # 插入, 效率不高. 索引的变更 lst.insert(2, "美国往事") 迭代添加 lst.extend("周杰伦") # ["周杰伦"][0] lst.extend(["倚天屠龙记", "乡村爱情"]) print(lst) #_2删除 lst = ["杰森斯坦森", "勒布朗詹姆斯", "尼古拉斯凯奇", "郭达森"] pop() 弹出一个, 默认弹出最后一个 lst.pop() lst.pop(1) # 可以弹出指定位置的元素 ret = lst.pop() # 返回值是被删除的元素 ret = lst.pop(2) print(ret) remove # 移除 , 指定元素, 删除第一个 lst.remove("勒布朗詹姆斯") # lst.remove("尼古拉斯凯奇") #切片删除 del lst[2] # 类似pop del lst[2:] # 批量删除 del lst[1:5:2] # 切片删除 lst.clear() # 清空列表 print(lst) #_3修改 lst = ["周杰伦", "周笔畅", "周星驰", "周润发"] lst[1] = "周星星" # 指定索引去修改. (重点) lst[1:3] = "马虎疼" # 迭代修改 lst[1:3] = ["马虎疼"] lst[::2] = ["马虎疼", "王健林"] # 当切片出来的内容步长如果不是1:元素的个数必须要匹配 lst[::2] = "马云" print(lst) #_4查询 lst = ["胡辣汤", "猪脚饭", "吱吱冒油的猪蹄子", "猪头肉"] food表示列表中的每一项 for food in lst: # 列表可以使用for循环。 list是一个可迭代对象 print(food) lst = [1, 2, 4, 21, 4, 2, 22, 123, 4, 68] lst.sort() # 排序. 从小到大. 升序 lst.sort(reverse=True) # 倒序。 降序. 从大到小 lst.reverse() # 翻过来 print(lst) print(len(lst)) # 长度 #_5列表的嵌套 lst = [["葫芦娃", "黑猫警长","西游记"], ["武斗乾坤", "wahaha", "斗破苍穹", "盘龙"], ["三体", "明朝那些事儿"]] print(lst[1][0]) print(lst[2][2][0]) #_降维: 一层一层的找 # 把wahaha中的a换成b lst[1][1] = lst[1][1].replace("a", "b") # 多层嵌套的时候如果进行操作。 需要重新赋值。 原因是替换的内容是一个 字符串 lst[1].insert(1, "大闹天宫") # 对于内部元素如果是可变的数据类型。 直接改就行了 print(lst)
二,元组
定义: tuple表示 , 由()组成内部元素用逗号隔开
特点:不可变 只读列表。 也有索引 和切片功能
t = ("周杰伦", "哇哈哈", "爽歪歪", "酸酸乳", "三鹿奶粉", "AD钙奶") print(t[1]) print(t[1:5]) # 切片的结果是一个元组 print(t[1:5:2]) t[1] = "益力多" # TypeError: \'tuple\' object does not support item assignment #元组的不可变. 元组的不可变指的是元组内部第一层元素的内存地址 t = ("张无忌", "周芷若", "赵敏") t[0] = "胡辣汤" t = ("周润发", "周星驰", ["渣渣辉","古天绿","陈小春"]) t[2].append("李嘉诚") print(t) lst1 = [] # 新列表 lst2 = list() # 新列表 print(lst1, lst2) t1 = () # 元祖 t2 = tuple() # 元祖 print(t1, t2) # 元组如果只有一个元素。必须加逗号 t1 = (1, 3, 5, 7, 9,) # () 运算符 优先级 lst = ["哈哈", ] print(t1) print(lst)
三,for循环用来查找列表中元素和索引
lst = ["语文", "数学", "英语", "代数", "体育", "生物", "生物第二学期"] for ke in lst: # 默认的for循环会忽略掉索引 print(ke)
# 获取到元素的索引和元素-背下来
for i in range(len(lst)): # i #是索引 # lst[i] #获取元素 print(i, lst[i]) s = "我今天下午要吃鸡" for i in range(len(s)): print(i, s[i])
四,练习
li=["alex","WuSer","ritian","wenzhou"] 1)计算列表的长度并输出 print(len(li)) 2)列表中追加元素"seven"并输出添加后的列表 li.append("seven") print(li) 3)请在列表的第1个位置插⼊元素"Tony",并输出添加后的列表 li.insert(1,"Tony") print(li) 4) 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表 li[2]=" Kelly" print(li) 5)请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实 现,不允许循环添加 l2=[1,"a",3,4,"heart"] li.extend(l2[0:]) print(li) print(li) 6)请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不 s="qwert" li.extend(s) print(li) 7) 添加"eric"元素,并输出结果 li.append("eric") print(li) 8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表 li.pop(2) print(li) 9)请删除列表中的第2⾄4个元素,并输出删除元素后的列表 del li[2:5] print(li) 10)请将列表所有得元素反转,并输出反转后的列表 li.reverse() print(li) 11)请计算出"alex"元素在列表li中出现的次数,并输出该次数。 count=0 for i in li : if [i]==["alex"] : count +=1 continue print(count)
2,写代码,有如下列表,利用切片实现每一个功能
li = [1, 3, 2, "a", 4, "b", 5,"c"] # 1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2] l1=li[0:3] print(l1) # 2)通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"] l2=li[3:6] print(l2) # 3)通过对li列表的切片形成新的列表l3,l3 = ["1,2,4,5] l3=li[0::2] print(l3) # 4)通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"] l4=li[1:6:2] print(l4) # 5)通过对li列表的切片形成新的列表l5,l5 = ["c"] l5=[li[-1]] print(l5) # 6)通过对li列表的切片形成新的列表l6,l6 = ["b","a",3] l6=li[-3::-2] print(l6)
3,写代码,有如下列表,按照要求实现每一个功能。
lis = [2, 5, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] 1)将列表lis中的"tt"变成大写(用两种方式)。 方式1 lis[3][2][1][0]=lis[3][2][1][0].upper() print(lis) 方式2 lis[3][2][1][0]=lis[3][2][1][0].replace("tt","TT") print(lis) 2)将列表中的数字3变成字符串"100"(用两种方式)。 方式1 lis[3][2][1][1] = "100" 方式2 lis[3][2][1][1] = str(lis[3][2][1][1] + 97) 方式三 lis[3][2][1][1] = str(lis[3][2][1][1]).replace("3", "100") 3)将列表中的字符串"1"变成数字101(用两种方式)。 方式1 lis[3][2][1][2] = int(lis[3][2][1][2]+"01") 方式2 lis[3][2][1][2] = int(lis[3][2][1][2].replace("1", "101"))
4, 请用代码实现:
li = ["alex", "eric", "rain"] 利用下划线将列表的每一个元素拼接成字符串 "alex_eric_rain" #方法一 li=["alex","eric","rain"] li[0:] =["alex_eric_rain"] print(li) #方法二 li = ["alex", "eric", "rain"] s = "" for name in li: s += name+"_" print(s.strip("_")) print(s[:len(s)-1]) # 当我确定最后一个一定是_的时候 #方法三 print("_".join(li))
5.利用for循环和range打印出下面列表的索引。
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] for index in range(0,len(li)): print(index)
6.利⽤for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中。
ko=[] for i in range(0,100): if i%2==0: ko.append(i) print(ko)
7.利用for循环和range找出50以内能被3整除的数,并将这些数插入到一个新列表中。
ko=[] for i in range(0,50): if i%3 ==0: ko.append(i) print(ko)
8.利⽤for循环和range从100~1,倒序打印。
ko=[] for i in range(1,101): ko.append(i) print(ko[::-1])
9.利⽤for循环和range从100~10,倒序将所有的偶数添加到一个新列表中,然后对列表的元素进行筛选,将能被4整除的数留下来。
ko=[] for i in range(10,100): if i%2==0: ko.append(i) for j in ko: if j%4==0: print(j)
10,利用for循环和range,将1 - 30的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成 *
ko=[] for i in range(1,30): ko.append(i) for j in range(len(ko)): if ko[j]%3 ==0: ko[j] = "*" print(ko)
11,查找列表li中的元素,移除每个元素的空格,并找出以 "A"或者"a"开头,并以"c"结尾的所有元素,并添加到一个新列表中,
最后循环打印这个新列表。li = ["TaiBai ", “alexC", “AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
li = ["TaiBai ", "alexC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"] ko=[] for i in li : li=i.strip() if i.capitalize().startswith("A") and i.endswith("c")==1: ko.append(i) print(ko)
12,开发敏感词语过滤程序,提示⽤用户输入评论内容,如果用户输户的内容中包含特殊的字符:
敏感词列表li = ["苍老师", "东京热", "武藤兰", "波多野结⾐"]
则将用户输入的内容中的敏感词汇替换成等长度的 *(苍老师就替换 ** *),并添
加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列 表中。
lis=[] li = ["苍老师", "东京热", "武藤兰", "波多野结衣"] content= input("请输入评论:") for i in li : if i in content: content = content.replace(i,"*"*len(i)) lis.append(content) print(content)
13,有如下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] #循环打印列表中的每个元素,遇到列表则再循环打印出它⾥⾯的元素。我想要的结果是: \'\'\'1 3 4 "alex" 3 7, 8 "taibai" 5 ritian \'\'\' for el in li: if type(el) == list: for el2 in el: if type(el2) == str: print(el2.lower()) else: print(el2) else: if type(el)==str: print(el.lower()) else: print(el)
14. 把班级学⽣数学考试成绩录⼊到⼀个列表中: 并求平均值. 要求: 录⼊的时候
要带着⼈名录⼊, 例如: 张三_44
lis=[] while 1: content=input("请输入信息:") if content.upper() == "Q": break lis.append(content) #总分 scot=0 for i in lis: scot += int(i.split("_")[1]) print(scot) #平均分 print(scot/len(lis))
15. 敲七游戏. 从0开始数数. 遇到7或者7的倍数要在桌上敲⼀下. 编程来完成敲 七
lis=[] n=int(input("请输入一个数:")) for i in range(0,n): if i%7==0 or "7" in str(i): lis.append("咣") else: lis.append(i) print(lis)
16. (升级题) 编写程序. 完成⼼动⼥⽣的筛选. (升级题)
⾸先. 程序会提示⽤户录⼊10位⼼仪⼥⽣的姓名. 然后把10位⼥⽣的名
字和序号展示出来. 由⽤户选择⼼动⼥⽣. 此时⽤户可以选择3个⼼动⼥⽣. 把⽤
户选中的三个⼼动⼥⽣的名字打印出来. 供⽤户继续选择. 这⼀次选择. 只能选
择⼀名⼥⽣. 然后输出⽤户的⼼动⼥⽣是xxx
运⾏效果:
lis=[] i=0 while i< 10 : nh="请输入心仪的女生"+"(你还可以输入" + str(10-i) +"个)" xd = input(nh+":") i+=1 lis.append(xd) index=0 for j in lis : index+=1 print("编号:"+ str(index) + ", " +"名字:" + j ) lst=[] count=1 while count<=3 : hh="请输入第"+ str(count) + "个美眉的编号:" gxh= int(input(hh + ":")) count +=1 lst.append(lis[gxh-1]) index2 = 0 for h in lst: index2 +=1 print("编号:" + str(index2) + ", " + "名字:" + h) love =int(input("请输入你喜欢的编号:")) print("程序选出来了你喜欢的是" + lst[love-1])
版权声明:本文为liucsxiaoxiaobai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。