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”用于判别值不在列表中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章