今日內容大綱
1. 什麼是列表
定義: 能裝對象的對象
在python中使用[]來描述列表, 內部元素用逗號隔開. 對數據類型沒有要求java
列表存在索引和切片. 和字符串是同樣的.python
2. 相關的增刪改查操做(重點)
添加:
1. append() 追加
2. insert(位置, 元素) 插入指定元素到指定位置
刪除:
1. pop(index) 根據索引刪除
2. remove(元素) 根據元素刪除
修改:
索引修改
lst[索引] = 元素
查詢:
for循環.編程
3. 列表的嵌套
多個列表互相嵌套數組
4. 列表的其餘操做
1. count() 計數
2. sort() 排序 reverse = True
3. reverse() 翻轉
4. len() 求長度app
5. 什麼是元組
能裝對象的對象. 不可變數據類型. 一旦確認好. 不可更改
只讀列表
能夠迭代編程語言
6. 元組的嵌套
和列表同樣.均可以互相嵌套.
元組的不可變: 指向不變測試
7. range(重點, 難點)
只要會數數就行
range(n) [0, n)
range(m,n) [m, n)
range(m,n,p) [m,n) 每隔p取一個優化
8.# 重點spa
for i in range(len(lst)):
i 索引
lst[i] 元素code
DAY4 -基礎數據類型之(list,tuple)
本節主要內容:
1.列表
2.列表的增刪改查
3.列表的嵌套
4.元組和元組的嵌套
5.range
一.列表
1.1 列表的介紹
列表是python的基礎數據類型之⼀ ,其餘編程語言也有相似的數據類型. 好比JS中的數 組, java中的數組等等. 它是以[ ]括起來, 每一個元素用' , '隔開並且能夠存放各類數據類型:
列表相比於字符串. 不只能夠存放不一樣的數據類型. 並且能夠存放⼤量的數據. 32位 python能夠存放: 536870912個元素, 64位能夠存放: 1152921504606846975個元素.⽽且列 表是有序的(按照你保存的順序),有索引, 能夠切片方便取值.
2.2 列表的索引和切片
列表和字符串⼀樣也擁有索引:
列表的切片:
⼆. 列表的增刪改查
1. 增, 注意, list和str是不⼀樣的. lst能夠發生改變. 因此直接就在原來的對象上進行了操做
2. 刪除 pop, remove, clear, del
3. 修改 索引切片修改
4. 查詢, 列表是⼀個可迭代對象, 因此能夠進⾏for循環
5. 其餘操做
三. 列表的嵌套
採用降維操做,⼀層⼀層的看就好,就沒有問題
四. 元組和元組嵌套 元組: 俗稱不可變的列表.又被成爲只讀列表, 元組也是python的基本數據類型之⼀, 用小括號括起來, 裏面能夠聽任何數據類型的數據, 查詢能夠. 循環也能夠. 切片也能夠. 但就是不能 改.
關於不可變, 注意: 這裏元組的不可變的意思是子元素不可變,而子元素內部的子元素是可 以變, 這取決於子元素是不是可變對象. 元組中若是隻有⼀個元素. ⼀定要添加⼀個逗號, 不然就不是元組
元組也有count(), index(), len()等⽅法. 能夠本身測試使用
五. range range能夠幫咱們獲取到⼀組數據. 經過for循環可以獲取到這些數據.
今日做業:
1.寫代碼,有以下列表,按照要求實現每⼀個功能
# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] # 1)計算列表的⻓度並輸出 '''''' ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] print(len(li)) ''' # 2)列表中追加元素"seven",並輸出添加後的列表 ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li.append('seven') #這部分不能夠直接寫在append裏邊 print(li) ''' # 3)請在列表的第1個位置插⼊元素"Tony",並輸出添加後的列表 '''#兩種理解方式 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li.insert(1,'Tony') #這部分不能夠直接寫在append裏邊 print(li) li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li.insert(0,'Tony') print(li) ''' # 4)請修改列表第2個位置的元素爲"Kelly",並輸出修改後的列表 ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li[1]='Kelly' print(li) ''' # 5)請將列表l2=[1,"a",3,4,"heart"]的每⼀個元素添加到列表li中,⼀⾏代碼實 # 現,不容許循環添加。 ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] l2=[1,"a",3,4,"heart"] li.extend(l2) print(li) ''' # 6)請將字符串s = "qwert"的每⼀個元素添加到列表li中,⼀⾏代碼實現,不 # 容許循環添加。 ''' #重點複習,從最大值索引加1開始切片 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] s="qwert" li[5:]=s print(li) ''' ''' # 7)請刪除列表中的元素"eric",並輸出添加後的列表 #這是錯題不作 ''' # 8)請刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表 ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] del li[1] print(li) ''' ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li.pop(1) print(li) ''' ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li.remove('WuSir') print(li) ''' # 9)請刪除列表中的第2⾄4個元素,並輸出刪除元素後的列表 ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] del li[1:4] print(li) ''' # 10)請將列表全部得元素反轉,並輸出反轉後的列表 ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] li.reverse() print(li) ''' # 11)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。 ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] s=li.count('alex') print(s) '''
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]='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)將列表中的數字3變成字符串"100"(⽤兩種⽅式)。 '''#列表中有兩個三,在這裏我只實現一個3,作下實驗 # 方法一: lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] lis[3][2][1][1]='100' print(lis) ''' ''' #方法二: lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] 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) """
4.請⽤代碼實現:
# li = ["alex", "eric", "rain"] # 利⽤下劃線將列表的每⼀個元素拼接成字符串"alex_eric_rain" '''#重點記憶 li = ["alex", "eric", "rain"] s='' for i in li: s+=i+'_' s=s.rstrip('_') print(s) ''' ''' li = ["alex", "eric", "rain"] li='_'.join(li) print(li) ''' '''#while方法實現 li = ["alex", "eric", "rain"] count = 0 ll = "" while count <= len(li) -1: ll =ll + (li[count])+"_" count += 1 print(ll.strip("_")) ''' ''' li = ["alex", "eric", "rain"] count = 0 ll = "" while count <= len(li): ll =ll + (li[count])+"_" count += 1 print(ll.strip("_")) '''
5.利⽤for循環和range打印出下⾯列表的索引。
# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] ''' li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] for i in range(len(li)): print(i,li[i]) '''
6.利⽤for循環和range找出100之內全部的偶數並將這些偶數插⼊到⼀個新列表中。
l=[] for i in range(101): if i%2==0: l.append(i) print(l)
7.利⽤for循環和range 找出50之內能被3整除的數,並將這些數插⼊到⼀個新列表中
l7=[] for i in range(51): if i%3==0: l7.append(i) print(l7)
8.利⽤for循環和range從100~1,倒序打印。
'''#正序打印1-100 for i in range(1,101): print(i) ''' ''' #倒敘打印100-1//重點記憶// for i in range(100,0,-1): print(i) '''
9.利⽤for循環和range從100~10,倒序將全部的偶數添加到⼀個新列表中,而後對列表的元素進⾏篩選,將能被4整除的數留下來。
l=[] k=[] for i in range(100,9,-2): l.append(i) print(l) for s in l: if s%4==0: k.append(s) print(k)
10.利⽤for循環和range,將1-30的數字⼀次添加到⼀個列表中,並循環這個列表,將能被3整除的數改爲*。
'''#重點記憶這道題,尤爲是後半部分 l1=[] for i in range(1,31): l1.append(i) print(l1) k=0 for s in l1: if s%3==0: l1[k]="*" k+=1 print(l1) '''
11,查找列表li中的元素,移除每一個元素的空格,並找出以"A"或者"a"開頭,並
以"c"結尾的全部元素,並添加到⼀個新列表中,最後循環打印這個新列表。
li = ["TaiBai ", 「ale xC", 「AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
''' #重點記憶:前半部分,怎麼去掉空格的,深刻了解方法 lk=[] s=0 li = ["TaiBai ", "ale xC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"] while s<len(li): li[s]=li[s].replace(" ",'') s+=1 print(li) for i in li: if (i.startswith('A') or i.startswith('a'))and i.endswith('c'): lk.append(i) print(lk) '''
12,開發敏感詞語過濾程序,提示⽤戶輸⼊評論內容,若是⽤戶輸⼊的內容中
包含特殊的字符:
敏感詞列表 li = ["蒼⽼師", "東京熱", "武藤蘭", "波多野結⾐"]
則將⽤戶輸⼊的內容中的敏感詞彙替換成等⻓度的*(蒼⽼師就替換***),並添
加到⼀個列表中;若是⽤戶輸⼊的內容沒有敏感詞彙,則直接添加到上述的列
表中。
''' #重點記憶,沒作出來 #字符串操做,利用列表的遍歷做爲條件,進行字符串的操做replace l=[] li = ["蒼老師", "東京熱", "武藤蘭", "波多野結衣"] s=input('請輸入評論內容:') for i in li: s=s.replace(i,len(i)*'*') l.append(s) print(l) ''' ''' l=[] li = ["蒼老師", "東京熱", "武藤蘭", "波多野結衣"] while 1: s=input('請輸入評論內容:') if s.upper()=='Q': break for i in li: s=s.replace(i,len(i)*'*') l.append(s) print(l) '''
13,有以下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
循環打印列表中的每一個元素,遇到列表則再循環打印出它⾥⾯的元素。
我想要的結果是:
1
3
4
alex
3
7,
8
taibai
5
ritian
''' 重點複習:沒有思路,作這個題目 #用==,而不是is #先判斷列表 #打印出來的結果沒有引號 li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] for i in li: if type(i)==list: for ii in i: if type(ii) is str: print(ii.lower()) else: print(ii) else: if type(i)==str: print(i.lower()) else: print(i) '''
14. 把班級學⽣數學考試成績錄⼊到⼀個列表中: 並求平均值. 要求: 錄⼊的時候
要帶着⼈名錄⼊, 例如: 張三_44
'''#這道題目沒作出來//初版問題比較多 sum=0 l=[] while 1: k=input('按Q退出,其餘鍵繼續錄入成績:').upper() if k=='Q': break s=input('請輸入名字和成績例如,張三_44:') l.append(s) print(l) avg=input('按1求平均值,其餘鍵退出:') if avg==1: for i in l: a,b=i.split('_') sum+=int(b) print('平均值是:',sum/len(l)) ''' '''#參考高手版本 #思路整理:兩個input合成1句話寫 #sum在下邊用,直接寫在下邊 #不用判斷輸入什麼,只要第一個input有,輸入Q,就直接退出 l=[] while 1: k=input('按Q退出,或者請輸入學生的姓名和成績(姓名_成績):').upper() if k=='Q': break l.append(k) print(l) #在這裏能夠清晰看到輸入的哪些姓名_成績 sum=0 for i in l: a,b=i.split('_') #這裏用到了解包 sum+=int(b) print('平均值是:',sum/len(l)) ''' '''#高手版本 lst = [] while 1: s = input("請輸入學生的姓名和成績(姓名_成績),輸入Q退出:") if s.upper() == "Q": break lst.append(s) sum = 0 for i in lst: a = i.split("_") sum += int(a[1]) print(sum / len(lst)) '''
15. 敲七遊戲. 從0開始數數. 遇到7或者7的倍數要在桌上敲⼀下. 編程來完成敲七
'''#初版 s=int(input('請輸入數字:')) cou=0 l=[] for i in range(1,s+1): l.append(i) for i in l: if i%7==0: l[cou]='咣' cou+=1 print(l) ''' ''' #第二版 #思路:1.輸入數字,定義索引常量0,定義空列表 # 2.用for,把輸入數字的1到數字,添加到列表中 # 3.用for遍歷,判斷是否是7的倍數,或者數字裏含有7 # 4.對這些數字進行修改 #5.打印 s=int(input('請輸入數字:')) cou=0 l=[] for i in range(1,s+1): l.append(i) for i in l: if i%7==0 or '7' in str(i): l[cou]='咣' cou+=1 print(l) ''' '''#第三版:高手優化版本 #思路:1.建立空列表,輸入任意數字 2.用for和range,建立1串數字 3.在for循環中,用if判斷是否是7的倍數或者含有數字7, 4.經過用空列表,進行添加 5.最後打印列表 #利用列表進行添加: l = [] n = int(input("輸入任意數:")) for i in range(1,n+1): if i % 7 == 0 or "7" in str(i) : l.append("咚") else: l.append(i) print(l) '''
16.(升級題) 編寫程序. 完成⼼動⼥⽣的篩選. (升級題)
⾸先. 程序會提示⽤戶錄⼊10位⼼儀⼥⽣的姓名. 而後把10位⼥⽣的名
字和序號展現出來. 由⽤戶選擇⼼動⼥⽣. 此時⽤戶能夠選擇3個⼼動⼥⽣. 把⽤
戶選中的三個⼼動⼥⽣的名字打印出來. 供⽤戶繼續選擇. 這⼀次選擇. 只能選
擇⼀名⼥⽣. 而後輸出⽤戶的⼼動⼥⽣是xxx
運⾏效果
多練習這個版本,複習
count=0 l=[] while count<5: shu=input('請輸入您心儀的女生(您還能夠輸入%s個):'%(5-count)) l.append(shu) count+=1 print('您當前的心儀女生有:') a=0 for i in range(len(l)): #這個地方要注意 print(f'編號:{a+1},名字:{l[a]}') a+=1 print("請輸入你更喜歡的三位女生的編號") b=0 b1=[] while b<3: b += 1 better_love=input(f"請輸入第{b}個美眉的編號:") b1.append(better_love) c=0 for i in range(len(b1)): print(f'編號:{c+1},名字:{b1[c]}') c+=1 print('最後三選一') d=int(input('請輸入你最喜歡的人的編號:')) print(f'程序幫你選出來了,你最喜歡的是{b1[d-1]}妹子') '''1版 # count = 5 # l = [] # while count > 0: # s = input("請輸入你心儀的女生(你還能夠輸入%s次);" % (count)) # l.append(s) # count -= 1 # print("你當前心儀的女生有:") # # a = 1 # for el in l: # print("編號: %s,名字: %s" % (a,el)) # a += 1 # print("請輸入你更喜歡的三個女人的編號:") # # b = 1 # l1 = [] # while b <= 3: # s2 = input("請輸入第%s個美眉的編號;" % (b)) # l1.append(l[int(s2)-1]) # b += 1 # print("更喜歡的新鮮出爐;") # # a1 = 1 # l2 = [] # for el1 in l1: # print("編號: %s,名字: %s" % (a1,el1)) # a1 += 1 # print("最後了,三選一:") # s3 = input("輸入你最喜歡的人的編號:") # l2.append(l1[int(s3)-1]) # print("程序幫你選出來了,你喜歡的是%s妹子." % (l2[0])) ''' #2版 # lst = [] # lst2 = [] # count = 0 # count2 = 0 # while count < 10: # xindong = input(f"請輸入你的心動女生(你還能夠輸入{10 - count}個:)") # lst.append(xindong) # count += 1 # print('您當前的心儀女生有:') # for i in range(len(lst)): # print(f"編號:{i + 1}, 名字:{lst[i]}") # print('請輸入你更喜歡的三個女生的編號') # while count2 < 3: # xindong2 = int(input(f"請輸入第{1 + count2}個美眉的編號:")) # lst2.append(lst[xindong2 - 1]) # count2 += 1 # print('更喜歡的新鮮出爐') # for i in range(len(lst2)): # print(f"編號:{i + 1}, 名字:{lst2[i]}") # print('最後三選一') # xindong3 = int(input("請輸入你喜歡的人的編號")) # print(f"程序幫你選出來了,你最喜歡的妹子是{lst2[xindong3 - 1]}")