從本實例學到什麼
- 如何去除列表內的重複元素?重複元素只保留一個。
- 運用in操作符和not in操作符來判別元素是否在列表內出現。
爲什麼會編寫本文?因爲我給同學們講Python,發現同學們在解答下面的題目時存在困難。
實例程序
題目描述
列表去重
輸入一個列表,去掉列表中重複的數字,按原來次序輸出!
輸入格式:
在一行中輸入列表
輸出格式:
在一行中輸出不重複列表元素
輸入樣例:
[4,7,5,6,8,6,9,5]
輸出樣例:
4 7 5 6 8 9
來源
PTA網站
上述題目的參考答案
ilist = eval(input()) #eval()函數把字符串形式的列表轉換爲Python列表。
result = [] #result存儲去重後的結果列表
for i in ilist: #i依次取ilist列表內的各個元素
if i not in result: #如果i沒有在result內出現
result.append(i) #把i加入result結果集
#輸出結果列表
print(result[0], end='')
for i in result[1:]:
print(' %d'%i, end='')
print()
上面代碼中的最後四行,可以換成更簡短的寫法:
print(' '.join([str(i) for i in result])) #join函數的用法見Python入門100個實例(39)
知識點講解
- 上一節給出的代碼中,第2-5行完成去重的功能。以題目的輸入樣例作爲程序輸入,我們一起來執行這4行代碼。
(1)執行第2行代碼,result結果集設爲空列表。
(2)遍歷ilist列表。ilist列表是:[4,7,5,6,8,6,9,5] 。
(2-1)i 取4爲值。4 not in result爲真,所以執行result.append(4),result值變爲[4]。
(2-2)i 取7爲值。7 not in result爲真,所以執行result.append(7),result值變爲[4, 7]。
(2-3)i 取5爲值。5 not in result爲真,所以執行result.append(5),result值變爲[4, 7, 5]。
(2-4)i 取6爲值。6 not in result爲真,所以執行result.append(6),result值變爲[4, 7, 5, 6]。
(2-5)i 取8爲值。8 not in result爲真,所以執行result.append(8),result值變爲[4, 7, 5, 6, 8]。
(2-6)i 取6爲值。6 not in result爲假,所以不執行result.append(6),result值不變,爲[4, 7, 5, 6, 8]。
(2-7)i 取9爲值。9 not in result爲真,所以執行result.append(9),result值變爲[4, 7, 5, 6, 8, 9]。
(2-8)i 取5爲值。5 not in result爲假,所以不執行result.append(5),result值不變,爲[4, 7, 5, 6, 8, 9]。
(2-9)循環結束。 - in操作符的寫法是:子表達式 in 列表。子表達式可以是一個字面值,比如6, 8,也可以是一個變量,比如i, x,也可以是一個式子,比如a+b。“子表達式 in 列表”整個構成一個表達式。作用是判別子表達式的值在列表中,如果在,則整個表達式的值爲真,否則爲假。
- not in操作符是not和in組合而來。寫法是:子表達式 not in 列表。“子表達式 not in 列表”整個構成一個表達式。作用是判別子表達式的值不在列表中,如果不在,則整個表達式的值爲真,否則爲假。
小結
- 本文示範了列表去除的做法。
- “子表達式 in 列表”整個構成一個表達式。作用是判別子表達式的值是否在列表中,如果在,則整個表達式的值爲真,否則爲假。
- “not in”用於判別值不在列表中。