Python全棧之字符串和列表相關操作
1. format格式化_填充符號使用
1.1 format格式化
字符串的格式化format
# (1)順序傳參 """{}是format中的占位符""" strvar = "{}向{}開瞭一槍,飲蛋而亡".format("趙沈陽","需保障") print(strvar) # (2)索引傳參 strvar = "{1}向{0}開瞭一槍,飲蛋而亡".format("趙沈陽","需保障") print(strvar) # (3)關鍵字傳參 strvar = "{who1}摸瞭{who2}一下,回頭一巴掌".format(who1="王偉",who2="馬春妮") strvar = "{who1}摸瞭{who2}一下,回頭一巴掌".format(who1="馬春妮",who2="王偉") print(strvar) # (4)容器類型數據(列表或元祖)傳參 # 方法一 strvar = "{0[0]}摸瞭{1[1]}一下,嘿嘿一笑,有戲".format(["趙蜂擁","趙世超","楊元濤"] , ("王雨涵","王同培")) print(strvar) # 方法二(推薦) strvar = "{group1[0]}摸瞭{group2[1]}一下,嘿嘿一笑,有戲".format(group1=["趙蜂擁","趙世超","楊元濤"] , group2 = ("王雨涵","王同培")) print(strvar) # 方法三(推薦) 註意一.如果該容器是字典,通過鍵取值時,不需要加引號 註意二.通過下標取值時,不能使用負號(逆向索引) strvar = "{group1[zfy]}摸瞭{group2[-1]}一下,嘿嘿一笑,有戲".format(group1={"zfy":"趙蜂擁","zsc":"趙世超"} , group2 = ("王雨涵","王同培")) print(strvar)
1.2 format的填充符號的使用
format的填充符號的使用( ^ > < )
""" ^ 原字符串居中顯示 > 原字符串居右顯示 < 原字符串居左顯示 {who:*^10} * : 填充的符號 ^ : 原字符串居中顯示 10: 原字符串長度 + 填充符號的長度 = 10 """ strvar = "{who:*^10}去長春長生醫藥公司,{do:>>10},感覺{feel:!<10}".format(who="李亞峰",do="紮疫苗",feel="血槽被掏空") print(strvar) # (6)進制轉換等特殊符號的使用( :d :f :s :, ) # :d 整型占位符 (強制要求類型是整型) strvar = "劉一峰昨天晚上買瞭{:d}個花露水泡腳".format(9) print(strvar) # :3d 占3位,不夠三位拿空格來補位(原字符串居右) strvar = "劉一峰昨天晚上買瞭{:3d}個花露水泡腳".format(9) print(strvar) strvar = "劉一峰昨天晚上買瞭{:<3d}個花露水泡腳".format(9) print(strvar) strvar = "劉一峰昨天晚上買瞭{:^3d}個花露水泡腳".format(9) print(strvar) # :f 浮點型占位符 (強制要求類型是浮點型) 默認保留小數6位 strvar = "王雨涵畢業之後的薪資是{:f}".format(9.9) print(strvar) # :.2f 小數點後保留2位,存在四舍五入 strvar = "王雨涵畢業之後的薪資是{:.2f}".format(9.188888) print(strvar) # :s 字符串占位符 strvar = "{:s}".format("楊元濤真帥") print(strvar) # :, 金錢占位符 strvar = "{:,}".format(12345678) print(strvar) # 綜合案例 strvar = "{:s}開工資{:.2f}元,買瞭{:d}個蘭博基尼".format("孫堅",300000.12345,10) print(strvar)
2. 字符串相關的方法
字符串的相關函數
# *capitalize 字符串首字母大寫 strvar = "how are you" res = strvar.capitalize() print(res) # *title 每個單詞的首字母大寫 strvar = "how old are you" res = strvar.title() print(res) # *upper 將所有字母變成大寫 strvar = "How Old Are You" res = strvar.upper() print(res) # *lower 將所有字母變成小寫 res = strvar.lower() print(res) # *swapcase 大小寫互換 strvar = "How old Are You" res = strvar.swapcase() print(res) # *len 計算字符串的長度 strvar = "python32真熱" res = len(strvar) print(res) # *count 統計字符串中某個元素的數量 """count(字符,[開始值,結束值])""" strvar = "真熱真熱呀" # res = strvar.count("真") # 2 # res = strvar.count("熱",2) # 1 # res = strvar.count("熱",2,3) # 隻有真這個字符 沒有熱 print(res) # *find 查找某個字符串第一次出現的索引位置 (推薦) """find(字符,[開始值,結束值])""" strvar = "To be or not to be that is a question" res = strvar.find("to") res = strvar.find("be",4) # 如果find 返回的是 -1 代表沒找到 res = strvar.find("be",4,10) # 4 ~ 9 print(res) # *index 與 find 功能相同 find找不到返回-1,index找不到數據直接報錯 """ res = strvar.index("be",4,10) print(res) """ # *startswith 判斷是否以某個字符或字符串為開頭 """ startswith(字符,[開始值,結束值]) endswith(字符,[開始值,結束值]) """ strvar = "To be or not to be that is a question" res = strvar.startswith("To") res = strvar.startswith("To",10) print(res) # *endswith 判斷是否以某個字符或字符串結尾 res = strvar.endswith("question") res = strvar.endswith("is",-14,-11) # is print(res) # ### is系列 # *isupper 判斷字符串是否都是大寫字母 strvar = "HOW A YOU" res = strvar.isupper() print(res) # *islower 判斷字符串是否都是小寫字母 strvar = "asdf - as" res = strvar.islower() print(res) # *isdecimal 檢測字符串是否以數字組成 必須是純數字 strvar = "abcdefg" strvar = "2134234.123" strvar = "2134234" res = strvar.isdecimal() print(res) # *split 按某字符將字符串分割成列表(默認字符是空格) *** strvar = "you can you up no can no bb" lst = strvar.split() strvar = "you#can#you#up#no#can#no#bb" lst = strvar.split("#") print(lst) # *join 按某字符將列表拼接成字符串(容器類型都可) *** lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb'] strvar = " ".join(lst) strvar = "#".join(lst) print(strvar) # *replace 把字符串的舊字符換成新字符 *** """字符串.replace('舊字符','新字符'[, 限制替換的次數])""" strvar = "范冰冰愛不愛我,愛我,不愛我,愛我,不愛我" res = strvar.replace("不愛我","愛我") # 選擇替換的次數 res = strvar.replace("不愛我","愛我",1) print(res) # *strip 默認去掉首尾兩邊的空白符 *** """空白符 空格 \n \t \r ... """ strvar = " 周潤發 " res = strvar.strip() print(strvar) print(res) # *center 填充字符串,原字符居中 (默認填充空格) """center(字符長度,填充符號)""" strvar = "趙世超" res = strvar.center(10) # res = strvar.center(10,"*") print(res)
3. 列表的相關操作
列表的相關操作
# ### 列表的相關操作 lst1 = ["孟凡偉","康與眾"] lst2 = ["康與眾","張宇"] # (1)列表的拼接 (同元組) res = lst1 + lst2 print(res) # (2)列表的重復 (同元組) res = lst1 * 3 print(res) # (3)列表的切片 (同元組) """ 語法 => 列表[::] 完整格式:[開始索引:結束索引:間隔值] (1)[開始索引:] 從開始索引截取到列表的最後 (2)[:結束索引] 從開頭截取到結束索引之前(結束索引-1) (3)[開始索引:結束索引] 從開始索引截取到結束索引之前(結束索引-1) (4)[開始索引:結束索引:間隔值] 從開始索引截取到結束索引之前按照指定的間隔截取列表元素值 (5)[:]或[::] 截取所有列表 """ lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"] # (1)[開始索引:] 從開始索引截取到列表的最後 res =lst[2:] print(res) # (2)[:結束索引] 從開頭截取到結束索引之前(結束索引-1) res =lst[:3] print(res) # (3)[開始索引:結束索引] 從開始索引截取到結束索引之前(結束索引-1) res = lst[3:5] print(res) # (4)[開始索引:結束索引:間隔值] 從開始索引截取到結束索引之前按照指定的間隔截取列表元素值 # 正向截取 res = lst[::5] print(res) # 0 5 10 # 逆向截取 res = lst[::-3] # -1 -4 -7 print(res) # (5)[:]或[::] 截取所有列表 res = lst[:] res = lst[::] print(res) # (4)列表的獲取 (同元組) # 0 1 2 lst = [10,20,30] # -3 -2 -1 print(lst[-1]) # (5)列表的修改 ( 可切片 ) lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"] # 改單個值 lst[1] = "陳璐" print(lst) # 1.改多個值 (如果使用切片進行修改,要求數據必須是Iterable可迭代性數據) # lst[1:4] = ["孫悟空","豬八戒","白骨精"] lst[1:4] = "你好" print(lst) # 2.改多個值(帶有步長) """帶有步長的切片修改,切出幾個元素就修改幾個元素,數量要一致.""" lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"] """0 3 6 """ lst[::3] = "abc" # lst[::3] = "ab" error print(lst) # (6)列表的刪除 ( 可切片 ) lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"] # 1.一次刪一個 # del lst[2] # print(lst) # 2.一次刪一堆 # del lst[1:-1] # print(lst) # 3.註意點 res = lst[1:-1] del res # 刪除的是res這個變量 和 列表無關 print(lst) # 額外的註意點 tup = (1,2,3,4,[10,11,12]) print(tup[-1]) tup[-1][-1] = 13 print(tup)
4. 列表的相關函數
列表相關的函數
# ### 列表相關的函數 # 增 # append 向列表的末尾添加新的元素 lst = ["趙沈陽"] lst.append("沈思雨") print(lst) # insert 在指定索引之前插入元素 lst = ['趙沈陽', '沈思雨'] lst.insert(1,"王偉") print(lst) # extend 迭代追加所有元素 """迭代追加的數據是可迭代性數據(容器類型數據,range對象,迭代器)""" lst = ['趙沈陽', '沈思雨'] # tup = (1,2,3) # lst.extend(tup) # strvar = "abc" # lst.extend(strvar) lst.extend(range(3)) print(lst) # 刪 # 1.pop 通過指定索引刪除元素,若沒有索引移除最後那個 (推薦) lst = ["曹靜怡","王志國","鄧鵬","合理"] # 不指定下標,默認刪除最後一個 res = lst.pop() print(res) print(lst) # 指定下標,刪除具體某個元素 res = lst.pop(1) print(res) print(lst) # 2.remove 通過給予的值來刪除,如果多個相同元素,默認刪除第一個 lst = ["曹靜怡","王志國","合理","鄧鵬","合理"] res = lst.remove("合理") print(res) print(lst) # 3.clear 清空列表 lst = ["曹靜怡","王志國","合理","鄧鵬","合理"] lst.clear() print(lst) # 改查 參考4.py # 列表的其他相關函數 # index 獲取某個值在列表中的索引 lst = ["曹靜怡","王志國","合理","鄧鵬","合理","鄧鵬輝","鄧鵬藍","合理","鄧鵬綠"] res = lst.index("合理") res = lst.index("合理",3) res = lst.index("合理",3,6) # 3 4 5 # res = lst.index("合理大") error print(res) # count 計算某個元素出現的次數 res = lst.count("合理") # 沒有范圍的概念 print(res) # sort 對列表排序 lst = [-90,-100,-1,90,78] # 從小到大進行排序 lst.sort() # 從大到小進行排序 lst.sort(reverse=True) print(lst) # 對字符串進行排序(按照ascii編碼) lst = ["kobi","james","jordon","yaoming","yi"] lst.sort() print(lst) # 是否可以對中文排序(瞭解 無規律可循) lst = ["王文","蔡徐坤"] lst.sort() print(lst) # reverse 列表反轉操作 lst = [1,2,"a","蔡徐坤","易烊千璽"] lst.reverse() print(lst)
5. 深淺拷貝
列表的深淺拷貝
# ### 列表的深淺拷貝 """ a = 100 b = a a = 200 print(b) lst1 = [1,2,3] lst2 = lst1 lst1.append(4) print(lst2) """ # 1.淺拷貝 import copy """模塊.方法() 同名模塊下的同名方法""" # 方法一 (推薦) """ lst1 = [1,2,3] lst2 = copy.copy(lst1) lst1.append(10) print(lst2) print(lst1) """ # 方法二 """ lst1 = [1,2,3] lst2 = lst1.copy() lst1.append(11) print(lst1) print(lst2) """ # 2.深拷貝 """把所有層級的容器元素都單獨拷貝一份,放到獨立的空間中""" """ # 現象 lst1 = [1,2,3,[4,5,6]] lst2 = copy.copy(lst1) lst1[-1].append(77) lst1.append(8888) print(lst2) print(lst1) """ import copy lst1 = [1,2,3,[4,5,6]] lst2 = copy.deepcopy(lst1) lst1[-1].append(999) print(lst2) print(lst1) # 其他容器的深拷貝 lst1 = (1,2,3,{"a":1,"b":[10,20]}) lst2 = copy.deepcopy(lst1) lst1[-1]["b"].append(30) print(lst1) print(lst2) """ 總結: 淺拷貝: 隻拷貝一級容器中的所有元素獨立出一個單獨的空間. 深拷貝: 把所有層級的容器中所有元素都單獨拷貝一份,形成獨立的空間 """ """ tuple 隻有count index 兩個方法 使用同列表 """
小提示:
:d 強制接收的數據為整型,如果不是整型則報錯 # 會報錯,因為9.5是小數 strvar = "劉一峰昨天晚上買瞭%d個花露水泡腳".formar(9.5) print(strvar) # 不報錯,3.88會強轉成int類型為3 strvar = "劉一峰昨天晚上買瞭%d個花露水泡腳" % (3.88) print(strvar) isdecimal strvar = "123.34" res = strvar.isdecimal() print(res) 這個值是False,因為.會認為不是一個數字 "123" 這個才會認為是純數字
6. 小練習
(1)字符串相關練習問題:
# ### 字符串相關練習 1.有變量name = "aleX leNb" 完成如下操作: 移除 name 變量對應的值兩邊的空格,並輸出處理結果 1)移除name變量左邊的"al"並輸出處理結果 2)移除name變量右面的"Nb",並輸出處理結果 3)移除name變量開頭的a與最後的"b",並輸出處理結果 4)判斷 name 變量是否以 "al" 開頭,並輸出結果 5)判斷name變量是否以"Nb"結尾,並輸出結果 6)將 name 變量對應的值中的 所有的"l" 替換為 "p",並輸出結果 7)將name變量對應的值中的第一個"l"替換成"p",並輸出結果 8)將 name 變量對應的值根據 所有的"l" 分割,並輸出結果。 name = "aleX leNb" res = name.split('l') print(res) 9)將name變量對應的值根據第一個"l"分割,並輸出結果。 10)將 name 變量對應的值變大寫,並輸出結果 11)將 name 變量對應的值變小寫,並輸出結果 12)將name變量對應的值首字母"a"大寫,並輸出結果 13)判斷name變量對應的值字母"l"出現幾次,並輸出結果 14)如果判斷name變量對應的值前四位"l"出現幾次,並輸出結果 15)從name變量對應的值中找到"N"對應的索引(如果找不到則報錯),並輸出結果 16)從name變量對應的值中找到"N"對應的索引(如果找不到則返回-1)輸出結果 17)從name變量對應的值中找到"X le"對應的索引,並輸出結果 18)請輸出 name 變量對應的值的第 2 個字符? 19)請輸出 name 變量對應的值的前 3 個字符? 20)請輸出 name 變量對應的值的後 2 個字符? 21)請輸出 name 變量對應的值中 "e" 所在索引位置? 2.實現一個整數加法計算器(兩個數相加): 如:content = input("請輸入內容:") 用戶輸入:5+9或3+ 9或5 + 6,然後進行分割再進行計算 3.升級題:實現一個整數加法計算器(多個數相加): 如:content = input("請輸入內容:") 用戶輸入:5+9+6 +12+ 13,然後進行分割再進行計算。 4.計算用戶輸入的內容中有幾個整數(以個位數為單位)。 如:content = input("請輸入內容:") # 如fhdal234slfh98769fjdla 5.等待用戶輸入內容,是否包含敏感字符? 如果存在敏感字符提示“存在敏感字符請重新輸入”,敏感字符:“粉嫩”、“鐵錘” 6.制作趣味模板程序需求:等待用戶輸入名字、地點、愛好 拼裝數據打印出:敬愛可親的xxx,最喜歡在xxx地方xxx
字符串相關練習答案:
# ### 字符串相關練習 # 1.有變量name = "aleX leNb" 完成如下操作: name = "aleX leNb" # 移除 name 變量對應的值兩邊的空格,並輸出處理結果 name.strip() # 1)移除name變量左邊的"al"並輸出處理結果 name.lstrip("al") # 2)移除name變量右面的"Nb",並輸出處理結果 name.rstrip("Nb") # 3)移除name變量開頭的a與最後的"b",並輸出處理結果 print(name[1:-1]) # 4)判斷 name 變量是否以 "al" 開頭,並輸出結果 res = name.startswith("al") print(res) # 5)判斷name變量是否以"Nb"結尾,並輸出結果 res = name.endswith("Nb") print(res) # 6)將 name 變量對應的值中的 所有的"l" 替換為 "p",並輸出結果 res = name.replace("l","p") print(res) # 7)將name變量對應的值中的第一個"l"替換成"p",並輸出結果 res = name.replace("l","p",1) print(res) # 8)將 name 變量對應的值根據 所有的"l" 分割,並輸出結果。 res = name.split("l") print(res) # 9)將name變量對應的值根據第一個"l"分割,並輸出結果。 # 字符串.split("分割的字符",分割的次數) # 從左向右 print(name.split("l",1)) strvar = "you-can-you-up" # 從右向左 print(strvar.rsplit("-",2)) # 10)將 name 變量對應的值變大寫,並輸出結果 name.upper() # 11)將 name 變量對應的值變小寫,並輸出結果 name.lower() # 12)將name變量對應的值首字母"a"大寫,並輸出結果 print(name.capitalize()) # 13)判斷name變量對應的值字母"l"出現幾次,並輸出結果 print(name.count("l")) # 14)如果判斷name變量對應的值前四位"l"出現幾次,並輸出結果 print(name.count("l",0,4)) # 15)從name變量對應的值中找到"N"對應的索引(如果找不到則報錯),並輸出結果 print(name.index("N")) # 16)從name變量對應的值中找到"N"對應的索引(如果找不到則返回-1)輸出結果 print(name.find("N")) # 17)從name變量對應的值中找到"X le"對應的索引,並輸出結果 print(name.find("X le")) # 18)請輸出 name 變量對應的值的第 2 個字符? print(name[1] ) # 19)請輸出 name 變量對應的值的前 3 個字符? print(name[:3]) # 20)請輸出 name 變量對應的值的後 2 個字符? print(name[-2:]) # 21)請輸出 name 變量對應的值中 "e" 所在索引位置? name = "aleX leNb" print(name.find("e")) print("<=====>") for i in range(len(name)): if name[i] == "e":print(i) # 2.實現一個整數加法計算器(兩個數相加): # 如:content = input("請輸入內容:") 用戶輸入:5+9或3+ 9或5 + 6,然後進行分割再進行計算 """ content = input("請輸入內容:") print(content) a,b = content.split("+") print( a,b ) print(float(a.strip()) + float(b.strip())) """ # 3.升級題:實現一個整數加法計算器(多個數相加): # 如:content = input("請輸入內容:") 用戶輸入:5+9+6 +12+ 13,然後進行分割再進行計算。 """ content = input("請輸入內容:") print(content) lst = content.split("+") print(lst) total = 0 for i in lst: total += float(i.strip()) print(total) """ # 4.計算用戶輸入的內容中有幾個整數. # 如:content = input("請輸入內容:") # 如fhdal234slfh98769fjdla """ content = input("請輸入內容:") total = 0 for i in content: if i.isdecimal(): total += 1 print(total) """ # 5.等待用戶輸入內容,是否包含敏感字符? # 如果存在敏感字符提示“存在敏感字符請重新輸入”,敏感字符:“粉嫩”、“鐵錘” # 方法一 ''' lst = ["粉嫩","鐵錘"] while True: # 重置sign標記 sign = False content = input("請輸入內容:") # print(content) """ if content.find("粉嫩") == -1 and content.find("鐵錘") == -1: print("ok") else: print("not ok") """ # 小分鐵嫩錘 for i in lst: if i in content: # 把sign標記設置成True sign = True break # 如果sign 這個標記是True,敏感,否則不敏感; if sign == True: print("存在敏感字符請重新輸入") else: print("不存在敏感字符") break ''' print("<====>") # 方法二 (python特有) 額外的 """如果在循環時,遇到break臨時終止瞭循環,else這個分支不執行的 隻有在正常全部循環執行瞭一遍之後,才會執行else分支 """ """ for i in range(3): if i == 2: break else: print("ok") """ """ lst = ["粉嫩","鐵錘"] # 觸發break,不執行else , 不觸發break , 執行else while True: content = input("請輸入內容:") for i in lst: # 但凡發現瞭敏感詞匯,直接break,就不會走else分支瞭 if i in content: print("是敏感詞匯,請重新輸入") # 終止內層的for循環 break else: print("不是敏感詞匯") # 終止外層while循環 break """ # 6.制作趣味模板程序需求:等待用戶輸入名字、地點、愛好 # 拼裝數據打印出:敬愛可親的xxx,最喜歡在xxx地方xxx while True: name = input("請輸入姓名: 按q可以退出~") if name.upper() == "Q": print("歡迎老鐵下次來玩~") break place = input("請輸入地點:") hobby = input("請輸入愛好:") print("敬愛可親的{},最喜歡在{}地方{}".format(name,place,hobby))
(2)列表相關練習問題:
# ### 列表相關練習 1.li = ["alex", "WuSir", "xboy", "oldboy"] 1)列表中追加元素"seven",並輸出添加後的列表 2)請在列表的第1個位置插入元素"Tony",並輸出添加後的列表 3)請修改列表第2個位置的元素為"Kelly",並輸出修改後的列表 4)請將列表l2=[1,"a",3,4,"heart"]的每一個元素添加到列表li中,一行 代碼實現,不允許循環添加。 5)請將字符串s = "qwert"的每一個元素添加到列表li中,一行代碼實現,不允許循環添加。 6)請刪除列表中的元素"alex",並輸出添加後的列表 7)請刪除列表請刪除列表中的第2至4個元素,並輸出刪除元素後的列表 8)刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表 9)請將列表所有得元素反轉,並輸出反轉後的列表 10)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。 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] 3,寫代碼,有如下列表,按照要求實現每一個功能。 lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] 1)將列表lis中的"tt"變成大寫。 2)將列表中的數字3變成字符串"100"。 3)將列表中的字符串"1"變成數字101 4,li = ["alex", "eric", "rain"] 利用下劃線將列表的每一個元素拼接成字符串"alex_eric_rain" 5.利用for循環打印出下面列表的索引。 li = ["alex", "WuSir", "xboy", "oldboy"] 6.利用for循環和range 找出50以內能被3整除的數,並將這些數插入到一個新列表中。 7.利用for循環和range從100~10,倒序將所有的偶數添加到一個新列表中,然後對列表的元素進行篩選,將能被4整除的數留下來 8.查找列表li中的元素,移除每個元素的空格,並找出以"A"或者"a"開頭,並以"c"結尾的所有元素,並添加到一個新列表中,最後循環打印這個新列表。 li = ["xboy ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc"] 9.敏感詞列表 li = ["張三", "李四", "王二", "麻子"] 將用戶輸入的內容中的敏感詞匯替換成等長度的*(張三就替換***),並添加到一個列表中;如果用戶輸入的內容沒有敏感詞匯,則直接添加到新列表中。 10.li = [1, 3, 4, "alex", [3, 7, “23aa”,8, "xboy"], 5,(‘a','b')] 循環打印列表中的每個元素,並轉化為小寫,遇到列表則再循環打印出它裡面的元素。 11.tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44]) a.講述元組的特性 b.請問tu變量中的第一個元素 "alex" 是否可被修改? c.請問tu變量中的"k2"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven" d.請問tu變量中的"k3"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven"
列表相關練習答案:
# ### 列表相關練習 # 1.li = ["alex", "WuSir", "xboy", "oldboy"] li = ["alex", "WuSir", "xboy", "oldboy"] # 1)列表中追加元素"seven",並輸出添加後的列表 li.append("seven") # 2)請在列表的第1個位置插入元素"Tony",並輸出添加後的列表 li.insert(0,"Tony") # 3)請修改列表第2個位置的元素為"Kelly",並輸出修改後的列表 li[1] = "Kelly" # 4)請將列表l2=[1,"a",3,4,"heart"]的每一個元素添加到列表li中,一行 # 代碼實現,不允許循環添加。 l2=[1,"a",3,4,"heart"] li.extend(l2) print(li) # 5)請將字符串s = "qwert"的每一個元素添加到列表li中,一行代碼實現,不允許循環添加。 s = "qwert" li.extend(s) print(li) # 6)請刪除列表中的元素"Tony",並輸出添加後的列表 li.remove("Tony") print(li) # 7)請刪除列表中的第2至4個元素,並輸出刪除元素後的列表 # del li[1:4] # print(li) # 8)刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表 res = li.pop(1) print(res) print(li) # 9)請將列表所有得元素反轉,並輸出反轉後的列表 li.reverse() print(li) # 10)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。 print(li.count("xboy")) # 2,寫代碼,有如下列表,利用切片實現每一個功能 li = [1, 3, 2, "a", 4, "b", 5,"c"] # 1)通過對li列表的切片形成新的列表l1,l1 = [1,3,2] print(li[:3]) # 2)通過對li列表的切片形成新的列表l2,l2 = ["a",4,"b"] print(li[3:6]) # 3)通過對li列表的切片形成新的列表l3,l3 = ["1,2,4,5] print(li[::2]) # 4)通過對li列表的切片形成新的列表l4,l4 = [3,"a","b"] print(li[1:-1:2]) # 5)通過對li列表的切片形成新的列表l5,l5 = ["c"] print(li[-1:]) # 6)通過對li列表的切片形成新的列表l6,l6 = ["b","a",3] print(li[-3::-2]) # 3,寫代碼,有如下列表,按照要求實現每一個功能。 lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] # 1)將列表lis中的"tt"變成大寫。 print(lis[3][2][1][0].upper()) # 2)將列表中的數字3變成字符串"100"。 lis[3][2][1][1] = "100" # 3)將列表中的字符串"1"變成數字101 # lis[3][2][1][-1] = 101 # print(lis) lis[3][2][1].remove("1") # 先刪 lis[3][2][1].append(101) # 在增 print(lis) # 4, li = ["alex", "eric", "rain"] # 利用下劃線將列表的每一個元素拼接成字符串"alex_eric_rain" # 一 print("_".join(li)) # 二 strvar = "" for i in li: strvar += i + "_" print(strvar.rstrip("_")) # 5.利用for循環打印出下面列表的索引。 li = ["alex", "WuSir", "xboy", "oldboy"] # 一 for i in range(len(li)): print(i) # 二 for i in li: print(li.index(i)) # 6.利用for循環和range 找出50以內能被3整除的數,並將這些數插入到一個新列表中。 a = [] for i in range(50): if i % 3 == 0 : a.append(i) print(a) # 7.利用for循環和range從100~10,倒序將所有的偶數添加到一個新列表中,然後對列表的元素進行篩選,將能被4整除的數留下來 a = [] for i in range(100,9,-2): if i % 4 == 0: a.append(i) print(a) # 8.查找列表li中的元素,移除每個元素的空格,並找出以"A"或者"a"開頭,並以"c"結尾的所有元素,並添加到一個新列表中,最後循環打印這個新列表。 li = ["xboy ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc"] lst2 = [] for j in li: if (j.strip().startswith("A") or j.strip().startswith("a")) and j.strip().endswith("c"): lst2.append(j.strip()) print(lst2) # 9.敏感詞列表 li = ["張三", "李四", "王二", "麻子"] # 將用戶輸入的內容中的敏感詞匯替換成等長度的*(張三就替換***),並添加到一個列表中;如果用戶輸入的內容沒有敏感詞匯,則直接添加到新列表中。 li = ["張三", "李四", "王二", "麻子"] lst = [] """ while True: strvar = input("請輸入詞匯:") lst.append(strvar.replace("張三","***").replace("李四","***").replace("王二","***").replace("麻子","*****")) print(lst) """ """ while True: strvar = input("請輸入詞匯:") # 按q退出 if strvar.upper() == "Q": break # 過濾敏感詞匯 for i in li: if i in strvar: strvar = strvar.replace(i,len(i) * "*") # 把處理數據放到列表中 lst.append(strvar) print(lst) """ # 10. print("<====>") li = [1, 3, 4, "ALEx", [3, 7, "23AA",8, "XBoy"], 5,("A","b")] # 循環打印列表中的每個元素,並轉化為小寫,遇到列表則再循環打印出它裡面的元素。 for i in li: # 判斷是否是字符串 if isinstance(i,str): print(i.lower()) # 判斷是否是Number elif isinstance(i,(int,bool,complex,float)): print(i) # 判斷是否是容器 elif isinstance(i,(list,tuple,set,dict)): for j in i: # 判斷容器中的元素是不是字符串 if isinstance(j,str): print(j.lower()) # 不是的話直接輸出即可 else: print(j) 11.tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44]) # a.講述元組的特性 可獲取 , 不可修改 , 有序 # b.請問tu變量中的第一個元素 "alex" 是否可被修改? 不可以 # c.請問tu變量中的"k2"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven" 列表 能改 tu[1][2]["k2"].append("Seven") # d.請問tu變量中的"k3"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven" 元組,不行,
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- Python基礎篇之字符串的最全常用操作方法匯總
- Python字符串常用方法以及其應用場景詳解
- Python 字符串操作詳情
- Python學習之字符串常用方法總結
- python中字符串的常見操作總結(一)