一、list
1、list基本知识
li = ['alex',123,True,(1,23,34,'wusir'),[2412,234,'xiaomin'],{'name':'alex'}] #索引、切片、步长 print(li[0]) #alex print(li[2]) #True print(li[:4]) #['alex', 123, True, (1, 23, 34, 'wusir')] print(li[3:1:-1]) #[(1, 23, 34, 'wusir'), True] li = [1,'a','b','a',2,3,'老男孩'] #增 #append 在列表最后加入元素,结果没有返回值,直接修改列表 li.append('alex') print(li) #[1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex'] li.append([1,2,3]) print(li) #[1, 'a', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]] #insert 插入 可以按索引插入 li.insert(2,'sb') print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3]] #extend 迭代添加,到最后 li.extend('214') print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4'] li.extend([1,2,'ab']) print(li) #[1, 'a', 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab'] #删 #remove 按元素删除 li.remove('a') print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2, 'ab'] #pop 按索引删除,默认删除最后一个,返回值是删除的元素 print(li.pop()) #ab print(li) #[1, 'sb', 'b', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2] print(li.pop(2)) #b print(li) #[1, 'sb', 'a', 2, 3, '老男孩', 'alex', [1, 2, 3], '2', '1', '4', 1, 2] #clear 清空列表内容 li.clear() print(li) #[] #del 删除列表或者切片删除 li = [1,2,4,6] # del li print(li) #列表不存在了 li = [1,'a','b','a',2,3,'老男孩'] #切片删除,可以按步长删除 del li[3:] #[1, 'a', 'b'] li = [1,'a','b','a',2,3,'老男孩'] del li[:-3:2] print(li) #['a', 'a', 2, 3, '老男孩'] #改 按照索引改 li = [1,'a','b','a',2,3,'老男孩'] li[0] = 'abc' print(li) #['abc', 'a', 'b', 'a', 2, 3, '老男孩'] li[0] = ['abc',123,'eta'] print(li) #[['abc', 123, 'eta'], 'a', 'b', 'a', 2, 3, '老男孩'] #按照切片去改 li[:3] = 'sb' print(li) #['s', 'b', 'a', 2, 3, '老男孩'] li[:2] = ['sb'] print(li) #['sb', 'a', 2, 3, '老男孩'] #查 #查看,切片步长查看 print(li[0]) #sb print(li[:2]) #['sb', 'a'] print(li[::2]) #['sb', 2, '老男孩'] # for 循环 for i in li: print(i) #sb #a #2 #3 #其他操作方法 #sort从小到大,正向排序 li = [23,21,43,1,54] li.sort() print(li) #[1, 21, 23, 43, 54] #从大到小,反向排序 li.sort(reverse =True) print(li) #[54, 43, 23, 21, 1] #翻转 li.reverse() #[1, 21, 23, 43, 54] #长度 len print(len(li)) #5 print(li) #[1, 21, 23, 43, 54] #count li = ['t',2342,'t','safs','sadfast','eawt'] print(li.count('t')) #2 #index 通过元素找索引 print(li.index('t')) #0 #str #join用字符串做一个连接符 #连接可迭代对象中的每一个元素,形成一个新的字符串 s = 'xxoo'.join('sb') print(s) #sxxoob #split str ---> list # s1 = 'wusie taibai' #print(s1.split()) #join list --> str l1 = ['wusir','taibai'] print(' '.join(l1)) #wusir taibai print(''.join(l1)) #wusirtaibai
2、list嵌套
li = [1,2,'alex',['100','wusir',99,[]],22] # 1,将alex 变成首字母大写的Alex # capitalize() # li[2] = 'Alex' # print(li) # print(li[2].capitalize()) li[2] = li[2].capitalize() print(li) # 2,将wusir变成全部大写的wusir 放到原处 # print(li[3]) # l2 = li[3] # print(l2[1].upper()) # li[3][1] = l2[1].upper() # print(li) li[3][1] = li[3][1].upper() print(li) # 3,将99加1变成100,放回原处 li[3][2] = li[3][2] + 1 print(li)
二、元组(tuple)
a = (1,2,'alex','oldboy') print(a[:2]) #(1, 2) print(a[2]) #alex for i in a: print(i) # 1 # 2 # alex # oldboy #儿子不能改,孙子可能改 b = (1,2,'alex',[1,'taibai'],(1,2,3),'oldboy') b[3].append('2342') print(b) #(1, 2, 'alex', [1, 'taibai', '2342'], (1, 2, 3), 'oldboy') print(len(b)) #6 print(b.count(1)) #1 print(b.index('oldboy')) #5
三、range
range相当于一个计数器
for i in range(100): # [0,1,2,。。。99] print(i) for i in range(0,10,2): # [0,2,4,6,8] print(i) for i in range(10,0,-1): # [10,9,8....1] print(i)
四、思考
1,计算用户输入的内容中有几个整数(连续数字算一个)。
counte = 0 number = 0 content = input('请输入内容:') if content[0].isdigit() and content[-1].isdigit(): counte += 1 for i in content: if i.isdigit(): for a in content[number:]: if content[number-1].isalpha(): counte += 1 break else:break number += 1 print(counte)
content = input('请输入内容:').strip() ls = [] for i in content: if i.isalpha(): content = content.replace(i, ' ', 1) content = content.strip().split(' ') for k in content: if k.isdigit(): ls.append(k) print(len(ls))
2、实现一个整数加法计算器(不定个数相加):
如:content = input(‘请输入内容:’) # 如用户输入:5+9+10或5+ 9或5 + 9+5+3,然后进行分割再进行计算。
content = input('请输入内容:') number = content.split('+') sum = 0 for i in number: sum += int(i) print(sum)
3、分别输出li = [1,2,3,['alex','wusir','老男孩'],4]里面的每个元素(包括2级列表)
li = [1,2,3,['alex','wusir','老男孩'],4] for i in li: a = i if type(i) == list: for t in a: print(t) continue print(i)
五、练习题
1,写代码,有如下列表,按照要求实现每一个功能
li = [‘alex’,’wusir’,’eric’,’rain’,‘alex’]
1)计算列表的长度并输出
2)列表中追加元素’seven’,并输出添加后的列表
3)请在列表的第1个位置插入元素’Tony’,并输出添加后的列表
4)请修改列表第2个位置的元素为’Kelly’,并输出修改后的列表
5)请将列表l2=[1,’a’,3,4,’heart’]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
6)请将字符串s = ‘qwert’的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
7)请删除列表中的元素’eric’,并输出添加后的列表
8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
9)请删除列表中的第2至4个元素,并输出删除元素后的列表
10)请将列表所有得元素反转,并输出反转后的列表
11)请计算出‘alex’元素在列表li中出现的次数,并输出该次数。
#1 li = ['alex','wusir','eric','rain','alex'] print(len(li)) #2 li.append('seven') print(li) #3 li.insert(0,'Tony') print(li) #4 li[1] = 'Kelly' print(li) #5 li.extend([1,'a',3,4,'heart']) print(li) #6 li.extend('qwert') print(li) #7 li.remove('eric') print(li) #8 print(li.pop(1)) print(li) #9 del li[1:4] print(li) #10 li.reverse() print(li) #11 print(li.count('alex'))
2,写代码,有如下列表,利用切片实现每一个功能
li = [1,3,2,’a’,4,’b’,5,’c’]
1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
2)通过对li列表的切片形成新的列表l2,l2 = [’a’,4,’b’]
3)通过对li列表的切片形成新的列表l3,l3 = [’1,2,4,5]
4)通过对li列表的切片形成新的列表l4,l4 = [3,’a’,’b’]
5)通过对li列表的切片形成新的列表l5,l5 = [‘c’]
6)通过对li列表的切片形成新的列表l6,l6 = [‘b’,’a’,3]
#1 li = [1,3,2,'a',4,'b',5,'c'] l1 = li[:3] print(l1) #2 l2 = li[3:6] print(l2) #3 l3 = li[::2] print(l3) #4 l4 = li[1:-1:2] print(l4) #5 l5 = li[-1:] print(l5) #6 l6 = li[-3::-2] print(l6)
3,写代码,有如下列表,按照要求实现每一个功能。
lis = [2,3,‘k’,[‘qwe’,20,[‘k1’,[‘tt’,3,’1’]],89],’ab’,’adv’]
1)将列表lis中的’tt’变成大写(用两种方式)。
2)将列表中的数字3变成字符串’100’(用两种方式)。
3)将列表中的字符串’1’变成数字101(用两种方式)。
#1 #第一种 lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[3][2][1][0] = 'TT' print(lis) #第二种 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) #2 #第一种 lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[1] = '100' lis[3][2][1][1] = '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 #第一种 lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[3][2][1][2] = int('10' + lis[3][2][1][2]) print(lis) #第二种 lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] lis[3][2][1][2] = 101 print(lis)
4,请用代码实现:
li = [‘alex’,’eric’,’rain’]
利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"
li = ['alex','eric','rain'] str_list = "_".join(li) print(str_list)
5,查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。
li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’ aqc’]
li = ['taibai ','alexC','AbC ','egon', ' Ritian',' Wusir',' aqc'] l1 = [] count = 0 for i in li: if i.strip().startswith('a') and i.strip().endswith('c'): l1.append(li[count].strip()) elif i.strip().startswith('A') and i.strip().endswith('c'): l1.append(li[count].strip()) count += 1 print(l1)
6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:
敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]
则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
li = ["苍老师","东京热","武藤兰","波多野结衣"] l1=[] content = input("请您输入相关内容:") for i in li: if i in content: content = content.replace(i,"***") l1.append(content) print(l1) print(content)
7,有如下列表li = [1,3,4’,alex’,[3,7,8,’taibai’],5,’ritian’]
循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
我想要的结果是(用两种方法实现,其中一种用range做):
1
3
4
‘alex’
3
7,
8
‘taibai’
5
ritian
#第一种 li = [1,3,4 ,'alex',[3,7,8,'taibai'],5,'ritian'] for i in li: if type(i) == list: for h in i: print(h) else:print(i) # 第二种 li = [1,3,4 ,'alex',[3,7,8,'taibai'],5,'ritian'] for i in range(len(li)): if type(li[i]) == list: for h in range(len(li[i])): print(li[i][h]) else:print(li[i])