Python入門100個實例(40)——列表去重

從本實例學到什麼

  1. 如何去除列表內的重複元素?重複元素只保留一個。
  2. 運用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)

知識點講解

  1. 上一節給出的代碼中,第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)循環結束。
  2. in操作符的寫法是:子表達式 in 列表。子表達式可以是一個字面值,比如6, 8,也可以是一個變量,比如i, x,也可以是一個式子,比如a+b。“子表達式 in 列表”整個構成一個表達式。作用是判別子表達式的值在列表中,如果在,則整個表達式的值爲真,否則爲假。
  3. not in操作符是not和in組合而來。寫法是:子表達式 not in 列表。“子表達式 not in 列表”整個構成一個表達式。作用是判別子表達式的值不在列表中,如果不在,則整個表達式的值爲真,否則爲假。

小結

  1. 本文示範了列表去除的做法。
  2. “子表達式 in 列表”整個構成一個表達式。作用是判別子表達式的值是否在列表中,如果在,則整個表達式的值爲真,否則爲假。
  3. “not in”用於判別值不在列表中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章