列表和元組作業及默寫
阿新 • • 發佈:2018-12-03
1,寫程式碼,有如下列列表,按照要求實現每⼀一個功能
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
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中出現的次數,並輸出該次數。
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迴圈和range打印出下⾯面列列表的索引。
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
6.利利⽤用for迴圈和range找出100以內所有的偶數並將這些偶數插⼊入到⼀一個新列列表 中。
7.利利⽤用for迴圈和range 找出50以內能被3整除的數,並將這些數插⼊入到⼀一個新列列 表中。
8.利利⽤用for迴圈和range從100~1,倒序列印。
9.利利⽤用for迴圈和range從100~10,倒序將所有的偶數新增到⼀一個新列列表中,然後對列列表的元素進⾏行行篩選,將能被4整除的數留留下來。
10,利利⽤用for迴圈和range,將1-30的數字⼀一次新增到⼀一個列列表中,並迴圈這個列列表,將能被3整除的數改成*。
11,查詢列列表li中的元素,移除每個元素的空格,並找出以"A"或者"a"開頭,並以"c"結尾的所有元素,並新增到⼀一個新列列表中,最後迴圈列印這個新列列表。
li = ["TaiBai ", “ale xC", “AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
12,開發敏敏感詞語過濾程式,提示⽤使用者輸⼊入評論內容,如果⽤使用者輸⼊入的內容中 包含特殊的字元:
敏敏感詞列列表 li = ["蒼老師", "東京熱", "武藤蘭", "波多野結衣"] 則將使用者輸入的內容中的敏敏感詞彙替換成等⻓長度的*(蒼⽼老老師就替換***),
並添 加到一個列列表中;如果⽤使用者輸⼊入的內容沒有敏敏感詞彙,則直接新增到上述的列列 表中。
13,有如下列列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] 迴圈列印列列表中的每個元素,遇到列列表則再迴圈打印出它⾥裡里⾯面的元素。 我想要的結果是:
1
3
4
"alex"
3
7,
8
"taibai"
5
ritian
14. 把班級學⽣生數學考試成績錄⼊入到⼀一個列列表中: 並求平均值. 要求: 錄⼊入的時候 要帶著⼈人名錄⼊入, 例例如: 張三_44
15. 敲七遊戲. 從0開始數數. 遇到7或者7的倍數要在桌上敲⼀一下. 程式設計來完成敲 七
16. (升級題) 編寫程式. 完成⼼心動⼥女女⽣生的篩選. (升級題)
⾸首先. 程式會提示⽤使用者錄⼊入10位⼼心儀⼥女女⽣生的姓名. 然後把10位⼥女女⽣生的名 字和序號展示出來.
由⽤使用者選擇⼼心動⼥女女⽣生. 此時⽤使用者可以選擇3個⼼心動⼥女女⽣生. 把⽤用 戶選中的三個⼼心動⼥女女⽣生的名字打印出來.
供⽤使用者繼續選擇. 這⼀一次選擇. 只能選 擇⼀一名⼥女女⽣生. 然後輸出⽤使用者的⼼心動⼥女女⽣生是xxx
運⾏行行效果:
明⽇日默寫內容
1,將列列表的增刪改查不不同的⽅方法全部寫出來, 例例如:增:有三種,append:在後⾯面新增。Insert按照索引新增, extend:迭代著新增。
2,默寫第,13題的實現的程式碼。
1 # 1,寫程式碼,有如下列列表,按照要求實現每⼀一個功能 2 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] 3 # 1)計算列列表的⻓長度並輸出 4 print(len(li)) 5 # 2)列列表中追加元素"seven",並輸出新增後的列列表 6 li.append('參考答案seven') 7 print(li) 8 # 3)請在列列表的第1個位置插⼊入元素"Tony",並輸出新增後的列列表 9 li.insert(0, 'Tony') 10 print(li) 11 # 4)請修改列列表第2個位置的元素為"Kelly",並輸出修改後的列列表 12 li[1] = 'Kelly' 13 print(li) 14 # 5)請將列列表l2=[1,"a",3,4,"heart"]的每⼀一個元素新增到列列表li中,⼀一⾏行行程式碼實 現,不不允許迴圈新增。 15 li.extend([1,"a",3,4,"heart"]) 16 print(li)17 # 6)請將字串串s = "qwert"的每⼀一個元素新增到列列表li中,⼀一⾏行行程式碼實現,不不 允許迴圈新增。 18 li.extend("qwert") 19 print(li) 20 # 7)請刪除列列表中的元素"eric",並輸出新增後的列列表 21 #題目錯誤 22 # 8)請刪除列列表中的第2個元素,並輸出刪除的元素和刪除元素後的列列表 23 print(li.pop(1),li) 24 # 9)請刪除列列表中的第2⾄至4個元素,並輸出刪除元素後的列列表 25 del li[1:4] 26 print(li) 27 # 10)請將列列表所有得元素反轉,並輸出反轉後的列列表 28 li.reverse() 29 print(li) 30 # 11)請計算出"alex"元素在列列表li中出現的次數,並輸出該次數。 31 print(li.count('alex')) 32 33 34 # 2,寫程式碼,有如下列列表,利利⽤用切⽚片實現每⼀一個功能 35 li = [1, 3, 2, "a", 4, "b", 5,"c"] 36 # 1)通過對li列列表的切⽚片形成新的列列表l1,l1 = [1,3,2] 37 li1 = li[:3] 38 # 2)通過對li列列表的切⽚片形成新的列列表l2,l2 = ["a",4,"b"] 39 l2 = li[3:6] 40 # 3)通過對li列列表的切⽚片形成新的列列表l3,l3 = ["1,2,4,5] 41 l3 = li[::2] 42 # 4)通過對li列列表的切⽚片形成新的列列表l4,l4 = [3,"a","b"] 43 l4 = li[1:6:2] 44 # 5)通過對li列列表的切⽚片形成新的列列表l5,l5 = ["c"] 45 l5 = li[-1:]###加個冒號是列表,不加是字串 46 # 6)通過對li列列表的切⽚片形成新的列列表l6,l6 = ["b","a",3] 47 l6 = li[-3::-2] 48 49 50 # 3,寫程式碼,有如下列列表,按照要求實現每⼀一個功能。 51 lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] 52 # 1)將列列表lis中的"tt"變成⼤大寫(⽤用兩種⽅方式)。 53 # 2)將列列表中的數字3變成字串串"100"(⽤用兩種⽅方式)。 54 # 3)將列列表中的字串串"1"變成數字101(⽤用兩種⽅方式)。 55 lis = [2, 3,"k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] 56 # 1) 57 lis[3][2][1][0] = 'TT' 58 lis[3][2][1][0] = lis[3][2][1][0].upper() 59 lis[3][2][1][0] = lis[3][2][1][0].replace('t','T') 60 61 lis[3][2][1][0] = lis[3][2][1][0].swapcase()#大變小,小變大 62 63 # 2) 64 lis[1] = lis[3][2][1][1] = '100' 65 lis[1] = lis[3][2][1][1] = str(lis[3][2][1][1] + 97) 66 67 # 3) 68 lis[3][2][1][2] = 101 69 lis[3][2][1][2] = int(lis[3][2][1][2] + '01') 70 lis[3][2][1][2] = int(lis[3][2][1][2]) + 100 71 72 73 # 4,請⽤用程式碼實現: 74 li = ["alex", "eric", "rain"] 75 # 利利⽤用下劃線將列列表的每⼀一個元素拼接成字串串"alex_eric_rain" 76 s = '_'.join(li)## S.join(iterable) -> str 77 print(s) 78 ##老師講解的,使用程式碼實現 79 # li = ["alex", "eric", "rain"] 80 # s = '' 81 # for item in li: 82 # s += item + '_' #累加 當每次迴圈都想要保留上一次迴圈的結果的時候就要使用累加 83 # s = s[:-1] #最後一個多餘的'_'不要 84 # print(s) 85 86 87 # 5.利利⽤用for迴圈和range打印出下⾯面列列表的索引。 88 li = ["alex", "WuSir", "ritian", "barry", "wenzhou"] 89 for i in range(len(li)): 90 print(i) 91 # 6.利利⽤用for迴圈和range找出100以內所有的偶數並將這些偶數插⼊入到⼀一個新列列表 中。 92 lis6 = [] 93 for i in range(100): 94 if i % 2 == 0: 95 lis6.append(i) 96 print(lis6) 97 ## print(list(range(0,100,2)))#如果不使用 for 迴圈的話可以直接這樣 98 99 # 7.利利⽤用for迴圈和range 找出50以內能被3整除的數,並將這些數插⼊入到⼀一個新列列 表中。 100 lis7 = [] 101 for i in range(50): 102 if i % 3 == 0: 103 lis7.append(i) 104 print(lis7) 105 106 # 8.利利⽤用for迴圈和range從100~1,倒序列印。 107 for i in range(100,0,-1): 108 print(i) 109 # 9.利利⽤用for迴圈和range從100~10,倒序將所有的偶數新增到⼀一個新列列表中,然後對列列表的元素進⾏行行篩選,將能被4整除的數留留下來 110 # #老師說使用 remove 是會出問題的,不能在遍歷的時候對原來的列表進行元素的刪除(估計是遍歷會混亂,因為元素少了,索引就變化了)具體什麼問題後面再說?????。 111 # lis9 = [] 112 # for i in range(100,9,-2): 113 # lis9.append(i) 114 # # for i in lis9: # 上面改成-2,這句就不用加了 115 # if i % 4 != 0: 116 # lis9.remove(i) 117 # print(lis9) 118 ##現在能用的就是新增進去(老師的講解) 119 # lst = [] 120 # for i in range(100,9,-2): 121 # if i % 4 == 0: 122 # lst.append(i) #老師說這裡是偷懶了,估計是這裡並不是對列表中的元素進行的操作,而是恰巧這裡的i正好是列表中的元素,歸根到底還是不能在遍歷的同時對列表中的元素進行刪除吧 123 # print(lst) 124 125 # 10,利利⽤用for迴圈和range,將1-30的數字⼀一次新增到⼀一個列列表中,並迴圈這個列列表,將能被3整除的數改成*。 126 ##這樣不對,改過之後沒有塞回去 127 # lis10 = [] 128 # for i in range(1,31): 129 # lis10.append(i) 130 # for i in lis10: ##這個 i 就是一箇中間變數,(i = lis[i],i = '*', lis[i] = i)我們只是修改了這個中間變數,沒有塞回去(沒有lis[i] = i 這個操作),跟原來的列表一毛錢的關係都沒有 131 # if i % 3 == 0: 132 # i = '*' 133 # print(lis10) 134 ##方法2 對的 135 lis10 = [] 136 for i in range(1,31): 137 lis10.append(i) 138 # print(lis10) 139 for c in range(len(lis10)):#要修改原列表就要使用索引 140 if lis10[c] % 3 == 0: 141 lis10[c] = '*' 142 print(lis10) 143 # 11,查詢列列表li中的元素,移除每個元素的空格,並找出以"A"或者"a"開頭,並以"c"結尾的所有元素,並新增到⼀一個新列列表中,最後迴圈列印這個新列列表。 144 ##我寫的方法1: 145 li = ["TaiBai ", "ale xC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"] 146 lis11 = [] 147 for i in range(len(li)):##因為是裝到新列表中的,所以不用改變原來的列表就行了,即不用根據索引遍歷,可以直接遍歷列表拿到符合條件的元素 148 li[i] = li[i].replace(' ','') 149 if li[i].upper().startswith('A') and li[i].endswith('c'): 150 lis11.append(li[i]) 151 for c in lis11: 152 print(c) 153 ##老師講解的方法2:(其實和上面的思路是一致的) 154 li = ["TaiBai ", "ale xC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"] 155 lst = [] 156 for item in li: 157 content = item.replace(' ','')#去空格 158 #if (content.startswith('A') or content.startswith('a')) and content.endswith('c'):#符合條件的元素 159 if content.upper().startswith('A') and content.endswith('c'):#符合條件的元素 160 lst.append(content) 161 print(lst) 162 163 # 12,開發敏敏感詞語過濾程式,提示⽤使用者輸⼊入評論內容,如果⽤使用者輸⼊入的內容中 包含特殊的字元: 164 # 敏敏感詞列列表 li = ["蒼⽼老老師", "東京熱", "武藤蘭", "波多野結⾐衣"] 則將⽤使用者輸⼊入的內容中的敏敏感詞彙替換成等⻓長度的*(蒼⽼老老師就替換***),並添 加到⼀一個列列表中;如果⽤使用者輸⼊入的內容沒有敏敏感詞彙,則直接新增到上述的列列 表中。 165 li = ["蒼⽼師", "東京熱", "武藤蘭", "波多野結衣"] 166 lis12 = [] 167 comments = input('請輸入評論內容:').strip() 168 for el in li:#el就是每一個敏感詞 169 if el in comments:#判斷是否包含敏感詞 170 comments = comments.replace(el,'*'*len(el))#替換銘感次為等長的* 171 lis12.append(comments) 172 print(lis12) 173 174 175 # 176 # 13,有如下列列表 177 # li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] 迴圈列印列列表中的每個元素,遇到列列表則再迴圈打印出它⾥裡里⾯面的元素。 我想要的結果是: 178 # 1 179 # 3 180 # 4 181 # "alex" 182 # 3 183 # 7, 184 # 8 185 # "taibai" 186 # 5 187 # ritian 188 # 189 li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] 190 # #方法1:自己寫的 191 for el in li: 192 if type(el) == list: 193 for i in el: 194 if type(i) == str: 195 print(i.lower()) 196 else: 197 print(i) 198 elif type(el) == str: 199 print(el.lower()) 200 elif type(el) == int: 201 print(el) 202 ##老師寫的 203 for el in li: 204 if type(el) == list: 205 for item in el:#迴圈內層列表 206 print(str(item).lower())#都轉換為字串就不用再判斷型別了 207 else: 208 print(str(el).lower()) 209 # 14. 把班級學⽣生數學考試成績錄⼊入到⼀一個列列表中: 並求平均值. 要求: 錄⼊入的時候 要帶著⼈人名錄⼊入, 例例如: 張三_44 210 ##學生的成績不是固定的,是需要持續寫入的,所以先寫一個成績錄入的程式 211 li = [] 212 while 1: 213 content = input('請輸入學生的資訊(輸入Q退出):') 214 if content.upper() == 'Q': 215 break 216 else: 217 lst.append(content) # 存入的格式是li = ['張三_44','李四_67','王五_56','趙六_33'] 218 # print(li) 219 220 ###下面是求平均值的程式 老師講解的 221 sum = 0 222 for el in li: 223 sum += int(el.split('_')[1]) #獲取到學生成績 el.split('_')切割之後就是個列表,直接拿到列表的第二項就行了,然後累加 224 print(sum/len(li)) # 獲取到平均值 225 226 ##下面是求平均值的程式 #這個是我自己寫的 227 # sum = 0 228 # for el in li: 229 # # for i in el.split('_'): # 這裡是遍歷判斷數字,但是這裡我們已經知道切割後的列表形式是['張三','44'],所以就直接拿就行了 230 # # if i.isdigit(): 231 # # sum += int(i) 232 # print(sum/len(li)) 233 234 # 15. 敲七遊戲. 從0開始數數. 遇到7或者7的倍數要在桌上敲⼀一下. 程式設計來完成敲 七 235 ##老師講解之後: 我對這個題目的理解有誤,這裡替換為'咣'有兩種情況,一種是數字裡面含有7(即題目的'遇到7',比如17,27,70...),另一種是7的倍數(比如14,21...) 236 ###我做的,有點麻煩 先把所有的元素新增到列表中,符合條件的元素的再修改,對原列表的修改一定會涉及到索引的呼叫 237 lst = [] 238 n =int(input('請輸入一個數字:')) 239 for i in range(1,n+1):#這裡從1開始是由於下面的執行圖是從1開始的,否則0也是7的倍數 240 lst.append(i) 241 if '7' in str(i) or i % 7 == 0:#這裡的 i 是列表中的元素,是 int 型別的,其對應的索引是(i-1) 242 lst[i-1] = '咣'#滿足條件的元素是i,它對應的索引是(i-1) 243 print(lst) 244 ###老師講解的 先判斷元素是否符合條件,符合條件的就直接加入自己需要的'咣',否則就正常的新增到列表中,只涉及到對元素的操作 245 lst = [] 246 n =int(input('請輸入一個數字:')) 247 for i in range(1,n): 248 if i % 7 == 0 or '7' in str(i): 249 lst.append('咣') 250 else: 251 lst.append(i) 252 print(lst) 253 254 255 # 16. (升級題) 編寫程式. 完成⼼心動⼥女女⽣生的篩選. (升級題) 256 # ⾸首先. 程式會提示⽤使用者錄⼊入10位⼼心儀⼥女女⽣生的姓名. 然後把10位⼥女女⽣生的名 字和序號展示出來. 由⽤使用者選擇⼼心動⼥女女⽣生. 此時⽤使用者可以選擇3個⼼心動⼥女女⽣生. 把⽤用 戶選中的三個⼼心動⼥女女⽣生的名字打印出來. 供⽤使用者繼續選擇. 這⼀一次選擇. 只能選 擇⼀一名⼥女女⽣生. 然後輸出⽤使用者的⼼心動⼥女女⽣生是xxx 257 # 運⾏行行效果: 258 lis_10 = [] 259 lis_3 = [] 260 for i in range(10): 261 like_girl_10 = input(f'請輸入您心儀的女生(您還可以輸入{10-i}個):').strip() 262 lis_10.append(like_girl_10) 263 print('您當前心儀的女生有:') 264 for i in range(len(lis_10)): 265 print(f'編號:{i+1},名字:{lis_10[i]}') 266 267 print('請輸入你更喜歡的三個女生的編號:') 268 for ii in range(3): 269 like_girl_3 = lis_10[int(input(f'請輸入第{ii+1}個女生的編號:'))-1] 270 lis_3.append(like_girl_3) 271 print('更喜歡的新鮮出爐:') 272 for ii in range(len(lis_3)): 273 print(f'編號:{ii+1},名字:{lis_3[ii]}') 274 275 print('最後了,三選一') 276 index = int(input('輸入你最喜歡的人的編號:')) 277 print(f'程式幫你選出來了,你最喜歡的是{lis_3[index-1]}') 278 279 280 # 明⽇日默寫內容 281 # 1,將列列表的增刪改查不不同的⽅方法全部寫出來, 例例如:增:有三種,append:在後⾯面新增。Insert按照索引新增, extend:迭代著新增。 282 # 新增:(記憶1,2) 283 # 1. append() 追加 284 # 2. insert(位置, 元素) 插入指定元素到指定位置 285 # #3.extend(可迭代物件) 迭代新增 把傳遞進去的引數進行迭代,把每一項新增到列表的末尾 (這個瞭解) 286 # 刪除:(記憶1,2) 287 # 1. pop(index) 根據索引刪除 刪除並返回索引項 288 # 2. remove(元素) 根據元素刪除 刪除第一次出現的指定元素,如果元素不存在則報錯 289 # #3.del 用切片或者索引刪除 全域性刪除 不常用(是關鍵字???) 290 # #4.clear() 清空 291 # 292 # 修改: 293 # 索引修改 294 # lst[索引] = 元素 坑: 如果步長不是1. 元素的個數必須要和切片的個數一致 295 # 查詢: 296 # for迴圈. 297 298 # 2,默寫第,13題的實現的程式碼。 299 # li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] 300 # 301 # for el in li: # 獲取到第一層內容 302 # if type(el) == list: # 判斷元素是否是xxx資料型別 303 # for item in el: # 迴圈內層列表 304 # print(str(item).lower()) 305 # else: 306 # print(str(el).lower())