python 基礎第四篇
今日大綱:
1. list(增刪改查)
列表可以裝大量的數據. 不限制數據類型. 表示方式:[] 方括號中的每一項用逗號隔開
列表和字符串一樣.也有索引和切片
常用的功能:
- 增: append()
- 刪:remove()
- 改: 索引修改
- 查: for循環
常用方法:
- len()
- count()
- sort() 排序
2. list的嵌套
降維操作
3. tuple 元組
不可變的列表. 只讀列表. 有索引和切片.
不可變的是它內部子元素. 如果子元素是列表. 列表中的元素是可以變的.
4. range()
數數
有一個參數:結束為止
兩個參數: 1. 起始位置, 2.結束位置
三個參數: 1. 起始位置, 2. 結束位置. 3.步長
04. 萬惡之源-基本數據類型(list,tuple)
本節主要內容:
- 列表
- 列表的增刪改查
- 列表的嵌套
- 元組和元組嵌套
- range
?. 列表
1.1 列表的介紹
列表是python的基礎數據類型之? ,其他編程語?也有類似的數據類型. 比如JS中的數
組, java中的數組等等. 它是以[ ]括起來, 每個元素?‘ , ‘隔開?且可以存放各種數據類型:
lst = [1, "周傑倫", True, False, ["可口可樂", "雪碧", "芬達"] ] print(lst)
列表相比於字符串. 不僅可以存放不同的數據類型. ?且可以存放?量的數據. 32位
python可以存放: 536870912個元素, 64位可以存放: 1152921504606846975個元素.?且列
表是有序的(按照你保存的順序),有索引, 可以切??便取值.
2.2 列表的索引和切片
列表和字符串?樣也擁有索引,包括切片:
lst = ["大陽哥", "趙明傑", "UZI", "賽利亞", "克倫特", "梅西", "哈登"] print(lst[3]) print(lst[1:3]) print(lst[-1::-2]) # -1 - 從右往左. 1 : 一個一個取
?. 列表的增刪改查
1. 增, 註意, list和str是不?樣的. lst可以發?改變. 所以直接就在原來的對象上進?了操
作
# 1. 列表的增加 lst = ["周傑倫", "王力宏", "周潤發"] lst.append("伍佰") # 向列表中添加一個元素, 元素放在末尾. 把一個元素追加到列表的末尾 print(lst) lst.append("周星星") print(lst)] lst.insert(1, "馬化騰") # 把元素插入到指定位置. 元素的移動 print(lst) lst.extend(["馬雲", "王健林", "李嘉誠"]) # 叠代添加 print(lst) #錄入姓名 lst = [] while 1: name = input("請輸入學生的名字") if name.upper() == "Q": break else: lst.append(name) # 把名字添加到列表 print(lst)
2. 刪除
pop, remove, clear, del
# 刪除 lst = ["蓋倫", "大白梨", "提莫", "大白梨"] # 1. pop() e = lst.pop() # 返回刪除的元素, 刪除最後一個 print(e) print(lst) e = lst.pop(1) # 根據給出的索引進行刪除 print(e) print(lst) # 2. remove(元素) lst.remove("大白梨") lst.remove("大白梨") print(lst) # 3. del 刪除 切片刪除 delete del lst[1:] print(lst) # 4. clear 清空 lst.clear() print(lst)
3. 修改
索引切片修改
# 修改 # 索引修改 lst = ["太白", "五色", "銀王", "日天"] lst[0] = "太黑" print(lst) lst[2] = "銀角大王" print(lst) # 切片修改 lst[1:3] = "馬化騰" # 叠代修改 print(lst) lst[1:3] = ["周傑倫", "他媳婦", "王力宏媳婦"] print(lst) # 查詢 lst = ["舒克貝塔", "黑貓警長", "熊大熊二", "葫蘆娃", "吳佩琪"] for el in lst: # element print(el)
4. 查詢, 列表是?個可叠代對象, 所以可以進?for循環
for el in lst: print(el)
5. 其他操作
# 常用操作 #出現的次數 lst = ["王尼瑪", "我記著你", "偉哥", "放學天臺見","王尼瑪", "王尼瑪"] print(len(lst)) print(lst.count("王尼瑪")) #排序 lst = [1, 9, 18, 2 , 34, 88, 7, 9] lst.sort() # 升序 lst.sort(reverse=True) # 倒序 print(lst)
三. 列表的嵌套
采?降維操作.?層?層的看就好.
lst = [1, "太白", "wusir", ["麻花疼", ["可口可樂"], "王劍林"]]
四. 元組和元組嵌套
元組: 俗稱不可變的列表.?被成為只讀列表, 元組也是python的基本數據類型之?, ??括
號括起來, ??可以放任何數據類型的數據, 查詢可以. 循環也可以. 切片也可以. 但就是不能
改.
#類型是否為元組 lit = (1, "花生", "山藥") print(type(lit)) #元組中如果只有?個元素. ?定要添加?個逗號, 否則就不是元組 tu = (1, ) # 需要添加一個逗號 print(type(tu)) tu = (‘DNF‘, "LOL", "CF", "鬥地主", "消消樂") print(tu[2:]) tu[2] = "王者榮耀" # 嘗試著修改 不能改, 會報錯 for el in tu: print(el) tu = (1, "馬化騰", ["胡辣湯", "疙瘩湯", "西紅柿雞蛋湯"]) tu[2].append("粘包米") # 元組本身沒有變. 變的是兒子中的內容 print(tu) #關於不可變, 註意: 這?元組的不可變的意思是?元素不可變. ??元素內部的?元素是可 #以變, 這取決於?元素是否是可變對象. tu = ("王昭君", "小澤老師", "夏川美裏", "斯琴高娃", ("邱老師",("刀削面", "炒餅", "蓋澆飯"), "劉德華", "周星星", "渣渣輝")) print(tu[4][1][2]) #元組也有count(), index(), len()等?法. 可以??測試使?
五. range
range可以幫我們獲取到?組數據. 通過for循環能夠獲取到這些數據.
# range for i in range(10): # 從0開始. 到10結束 print(i) for i in range(3, 7): # 從3 開始. 打印到7結束. 不能到7 print(i) for i in range(3, 10, 2): # 從3 到 10 每2個取一個 print(i) for i in range(10, -10, -1): #從10 開始到-10結束. 倒著數 print(i) # 求1-2+3-4...+99-100=? sum = 0 for i in range(1, 101): if i % 2 == 0: sum = sum - i else: sum = sum + i print(sum) lst = [1, True, "哈哈", ("可口可樂", "百事可樂", "芬達")] # lst[3] = "胡辣湯" lst.insert(2, "自行車") print(lst)
作業:
一.寫代碼,有如下列表,按照要求實現每?個功能
li = ["alex", "WuSir", "ritian", "barry", "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中,??代碼實 # 現,不允許循環添加。 li.extend([1,"a",3,4,"heart"]) print(li) # 6)請將字符串s = "qwert"的每?個元素添加到列表li中,??代碼實現,不 # 允許循環添加。 li.extend("qwert") print(li) # 7)請增加列表中的元素"eric",並輸出添加後的列表 li.append("eric") print(li) # 8)請刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表 e = li.pop(2) print(e) print(li) # 9)請刪除列表中的第2?4個元素,並輸出刪除元素後的列表 del li [2:4] print(li) # 10)請將列表所有得元素反轉,並輸出反轉後的列表 li.reverse() print(li) # 11)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。 print(li.count("alex"))
二,寫代碼,有如下列表,利?切?實現每?個功能
li = [1, 3, 2, "a", 4, "b", 5,"c"] # 1)通過對li列表的切?形成新的列表l1,l1 = [1,3,2] l1 = li [: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:-8:-2] print(l6)
三,寫代碼,有如下列表,按照要求實現每?個功能。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] # 1)將列表lis中的"tt"變成?寫(?兩種?式)。 #第一種: lis[3][2][1][0] = lis[3][2][1][0].upper() print(lis) #第二種: lis [3][2][1][0] = "TT" print(lis) # 2)將列表中的數字3變成字符串"100"(?兩種?式)。 #第一種: lis [1] = "100" lis [3][2][1][1] = "100" print(lis) #第二種: lis [1] = "100" lis [3][2][1][1] = str(lis [3][2][1][1] + 97) print(lis) # 3)將列表中的字符串"1"變成數字101(?兩種?式)。 lis [3][2][1][2] = int("101") print(lis)
四,請?代碼實現:
li = ["alex", "eric", "rain"] # 利?下劃線將列表的每?個元素拼接成字符串"alex_eric_rain" count = 0 l1 = "" while count <= len(li) - 1: l1 =l1 + (li[count])+"_" count += 1 print(l1.strip("_"))
五.利?for循環和range打印出下?列表的索引。
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] for i in range(len(li)): print(li[i])
六.利?for循環和range找出100以內所有的偶數並將這些偶數插?到?個新列表中
l1 = [] for i in range(1,101): if i % 2 == 0: l1.append(i) print(l1)
七.利?for循環和range 找出50以內能被3整除的數,並將這些數插?到?個新列表中.
l1 = [] for i in range(50): if i % 3 == 0: l1.append(i) print(l1)
八.利?for循環和range從100~1,倒序打印。
for i in range(100,0,-1): print(i)
九.利?for循環和range從100~10,倒序將所有的偶數添加到?個新列表中,然
後對列表的元素進?篩選,將能被4整除的數留下來。
l1 = [] for i in range(100,9,-1): if i % 2 == 0 and i % 4 == 0: l1.append(i) print(l1)
十,利?for循環和range,將1-30的數字?次添加到?個列表中,並循環這個
列表,將能被3整除的數改成*
l1 = [] for i in range(1,31): l1.append(i) if int(i) % 3 == 0: l1[i-1] = "*" print(l1)
十一,查找列表li中的元素,移除每個元素的空格,並找出以"A"或者"a"開頭,並
以"c"結尾的所有元素,並添加到?個新列表中,最後循環打印這個新列表。
li = ["TaiBai ", "ale xC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"] l1 = [] for i in range(len(li)): l2 = li[i].replace(" ","") if (l2.startswith("A") or l2.startswith("a")) and l2.endswith("c"): l1.append(l2) print(l1)
十二,開發敏感詞語過濾程序,提示?戶輸?評論內容,如果?戶輸?的內容中
包含特殊的字符:
敏感詞列表 li = ["蒼?師", "東京熱", "武藤蘭", "波多野結?"]
則將?戶輸?的內容中的敏感詞匯替換成等?度的*(蒼?師就替換***),並添
加到?個列表中;如果?戶輸?的內容沒有敏感詞匯,則直接添加到上述的列
表中。
li = ["蒼老師", "東京熱", "武藤蘭", "波多野結衣"] l1 = [] s = input("請輸入評論內容") for i in li: if i in s: l = len(i) s = s.replace(i,"*"*l) l1.append(s) print(l1)
十三,有如下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
循環打印列表中的每個元素,遇到列表則再循環打印出它??的元素。
我想要的結果是:
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 li in i: if type(li) == str: print(li.lower()) else: print(li) elif type(i) == str: print(i.lower()) else: print(i)
十四. 把班級學?數學考試成績錄?到?個列表中: 並求平均值. 要求: 錄?的時候
要帶著?名錄?, 例如: 張三_44
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))
十五. 敲七遊戲. 從0開始數數. 遇到7或者7的倍數要在桌上敲?下. 編程來完成敲七
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)
十六. (升級題) 編寫程序. 完成?動??的篩選. (升級題)
?先. 程序會提示?戶錄?10位?儀??的姓名. 然後把10位??的名
字和序號展示出來. 由?戶選擇?動??. 此時?戶可以選擇3個?動??. 把?
戶選中的三個?動??的名字打印出來. 供?戶繼續選擇. 這?次選擇. 只能選
擇?名??. 然後輸出?戶的?動??是xxx
count = 5 a = 1 a1 = 1 b = 1 l = [] l1 = [] l2 = [] while count > 0: s = input("請輸入你心儀的女生(你還可以輸入%s次);" % (count)) l.append(s) count -= 1 print("你當前心儀的女生有:") for el in l: print("編號: %s,名字: %s" % (a,el)) a += 1 print("請輸入你更喜歡的三個女人的編號:") while b <= 3: s2 = input("請輸入第%s個美眉的編號;" % (b)) l1.append(l[int(s2)-1]) b += 1 print("更喜歡的新鮮出爐;") for el1 in l1: print("編號: %s,名字: %s" % (a1,el1)) a1 += 1 print("最後了,三選一:") s3 = input("輸入你最喜歡的人的編號:") l2.append(l1[int(s3)-1]) print("程序幫你選出來了,你喜歡的是%s妹子." % (l2[0]))
python 基礎第四篇