Python 基础四 列表
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
1、列表的索引
# 列表的索引 list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] l1 = list[0] #索引为0的值 l2 = list[4] #索引为4的值
l3 = list[0:3]
print(l1,l2,l3)
2、列表的增
列表的增加,无返回值
2.1 append 将内容添加到最后
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] s=list.append('江海') #增加到最后 s=list.append([2,'hello',8]) #增加到最后 print(list)
#在列表中添加人名,直到输入Q才结束
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] while 1: username = input('请输入名字:') if username.strip().upper() == 'Q': break else: list.append(username) print(list)
2.2 insert 根据索引去增加
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] l1=list.insert(1,'女神') #索引值为1的地方 插入‘女神’ print(list)
2.3 extend 迭代的增加
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] l1 = list.extend('小可爱') #添加内容为‘小’,‘可’,‘爱’ l2 = list.extend([123,'asd']) #添加内容为‘123’,‘asd’ print(list)
3、列表的删
列表的删除,有返回值,返回值为被删除的内容
3.1 pop
pop中无内容表示默认删除最后一个。
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] l1=list.pop(1) # 删除list中索引为1的值 print(list) #打印删除后的列表 print(l1) #打印被删除的值
3.2 remove
按列表中的元素删除,且无返回值
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] l2 = list.remove('ogen') #指定哪个删哪个 print(list)
3.3 clear 清空列表
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] l=list.clear() print(list)
3.4 del 删除列表
3.4.1 删除整个列表时会报错
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] # del list # 删除整个列表 # del list[0] #删除列表中的某个元素,根据索引 del list[3:] #切片删除 索引3以后的元素 print(list)
4、列表中的改
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] # list[0]='大王' #改单个内容 # list[0]=['二货','小可爱'] #改成列表 # list[0:2]='lulala' #改成单个的元素 list[0:2]=['我','有','一','只'] #改成列表 print(list)
5、列表中的查
按索引查 list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] for i in list: print(i) 按切片查: list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] print(list[2:5])
6、公共方法:len、count、index
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] l1=len(list) l2=list.count('太白') l3=list.index('太白') print(l1,l2,l3)
7、排序 sort
# 正向排序 s=[1,4,5,2,7,3,8,10,6] s.sort() print(s) # 反向排序 s=[1,4,5,2,7,3,8,10,6] s.sort(reverse=True) print(s) #列表的翻转 s=[1,4,5,2,7,3,8,10,6] s.reverse() print(s)
8、列表的嵌套
# 找到list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao'] 中的白 list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao'] l1=list[2][1] print(l1) # 将t改为T,并放回列表中 list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao'] list[0]=list[0].capitalize() print(list) # 将太白金星改为太白啦 list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao'] # 方法一: list[2]='太白啦' print(list) # 方法二: l1=list[2].replace('金星','啦') print(list)
9、元祖
元祖为只读列表,可循环查询,可切片。
儿子不能改,孙子可能可以改。
tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon') # print(tu[3]) # print(tu[0:4]) # for i in tu: # print(i) tu[4][3]=tu[4][3].upper() #将taibai变大写 # print(tu) tu[4].append('sb') #在元祖的列表中添加一个字符串 print(tu)
10、join
将列表转换成字符串用join,将字符串转换为列表使用split
#以-作为连接,s必须是可迭代对象 s='amyleel' s1='_'.join(s) print(s1) tu = ('1','2','3','alex','egon') t1 = '+'.join(tu) print(t1)
11、range
相当于字存放数字的列表(顾头不顾腚)
可加步长 for i in range(3,10): print(i) for i in range(10): print(i) for i in range(0,10,3): print(i) for i in range(10,0,-2): print(i) for i in range(10,-1,-2): print(i)
练习题:
# 写代码,有如下列表,按照要求实现每一个功能 # li = [‘alex’,’wusir’,’eric’,’rain’,‘alex’] # 1)计算列表的长度并输出 ''' li = ['alex','wusir','eric','rain','alex'] l1=len(li) print(l1) # 2)列表中追加元素’seven’,并输出添加后的列表 li = ['alex','wusir','eric','rain','alex'] li.append('seven') print(li) # 3)请在列表的第1个位置插入元素’Tony’,并输出添加后的列表 li = ['alex','wusir','eric','rain','alex'] li.insert(0,'Tony') print(li) # 4)请修改列表第2个位置的元素为’Kelly’,并输出修改后的列表 li = ['alex','wusir','eric','rain','alex'] # li[1]='Kelly' li[1]=li[1].replace('wusir','Kelly') print(li) # 5)请将列表l2=[1,’a’,3,4,’heart’]的每一个元素添加到列表li中, # 一行代码实现,不允许循环添加。 li = ['alex','wusir','eric','rain','alex'] l2=[1,'a',3,4,'heart'] li.append(l2) print(li) # 6)请将字符串s = ‘qwert’的每一个元素添加到列表li中,一行代码实现, # 不允许循环添加。 li = ['alex','wusir','eric','rain','alex'] s = 'qwert' li.extend(s) print(li) # 7)请删除列表中的元素’eric’,并输出添加后的列表 li = ['alex','wusir','eric','rain','alex'] li.remove('eric') print(li) # 8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表 li = ['alex','wusir','eric','rain','alex'] li.pop(2) print(li) # 9)请删除列表中的第2至4个元素,并输出删除元素后的列表 li = ['alex','wusir','eric','rain','alex'] del li[2:] print(li) # 10)请将列表所有得元素反转,并输出反转后的列表 li = ['alex','wusir','eric','rain','alex'] li.reverse() print(li) # 11)请计算出‘alex’元素在列表li中出现的次数,并输出该次数。 li = ['alex','wusir','eric','rain','alex'] l1=li.count('alex') print(l1) # 2,写代码,有如下列表,利用切片实现每一个功能 # li = [1,3,2,’a’,4,’b’,5,’c’] # 1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2] li = [1,3,2,'a',4,'b',5,'c'] # l1=li[0:3] # print(l1) # 或者 del li[3:] print(li) # 2)通过对li列表的切片形成新的列表l2,l2 = [’a’,4,’b’] li = [1,3,2,'a',4,'b',5,'c'] l1 = li[3:6] print(l1) # 3)通过对li列表的切片形成新的列表l3,l3 = [’1,2,4,5] li = [1,3,2,'a',4,'b',5,'c'] l2 = li[0::2] print(l2) # 4)通过对li列表的切片形成新的列表l4,l4 = [3,’a’,’b’] li = [1,3,2,'a',4,'b',5,'c'] l1 = li[1:-1:2] print(l1) # 5)通过对li列表的切片形成新的列表l5,l5 = [‘c’] li = [1,3,2,'a',4,'b',5,'c'] l=li[-1] print(l) # 6)通过对li列表的切片形成新的列表l6,l6 = [‘b’,’a’,3] li = [1,3,2,'a',4,'b',5,'c'] l=li[5::-2] print(l) # 3,写代码,有如下列表,按照要求实现每一个功能。 # lis = [2,3,‘k’,[‘qwe’,20,[‘k1’,[‘tt’,3,’1’]],89],’ab’,’adv’] # 1)将列表lis中的’tt’变成大写(用两种方式)。 lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[3][2][1][0]=lis[3][2][1][0].upper() print(lis) lis[3][2][1][0]='TT' lis[3][2][1][0]=lis[3][2][1][0].replace('tt','TT') print(lis) # 2)将列表中的数字3变成字符串’100’(用两种方式)。 # 方法一: lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[1]=lis[3][2][1][2]='100' print(lis) # 方法二: lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[1]=str(lis[1]+97) lis[3][2][1][1]=str(lis[3][2][1][1]+97) print(lis) # 3)将列表中的字符串’1’变成数字101(用两种方式)。 # 方法一: lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[3][2][1][2]=int(lis[3][2][1][2])+100 print(lis) # 方法二: lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[3][2][1][2]=101 print(lis) # 方法三: lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[3][2][1][2]=int(lis[3][2][1][2].replace('1','101')) print(lis) # 请用代码实现: # li = [‘alex’, ’eric’, ’rain] # 利用下划线将列表的每一个元素拼接成字符串 # "alex_eric_rain" li = ['alex', 'eric', 'rain'] l='_'.join(li) print(l) # 5,查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头, # 并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。 # li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’ aqc’] li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc'] list=[] for i in li: i=i.strip() if i.lower().startswith('a') and i.endswith('c'): list.append(i) print(list) # 有如下列表li = [1,3,4’,alex’,[3,7,8,’taibai’],5,’ritian’] # 循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。 # 我想要的结果是(用三种方法实现): # # 方法一: li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian'] for i in range(len(li)): if type(li[i])==list: for j in li[i]: print(j) else: print(li[i]) # # # 方法二: # 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) # 6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符: # 敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”] # 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中 li = ["苍老师","东京热","武藤兰","波多野结衣"] new_li=[] info = input("请输入内容:").strip() for i in li: if info.find(i)!=-1: l=len(i) info = info.replace(i,l*'*') new_li.append(info) print(new_li)