一,列表
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])