从本实例学到什么
- 如何去除列表内的重复元素?重复元素只保留一个。
- 运用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”用于判别值不在列表中。