I am a teacher!

导航

习题解析之:列表去重

【问题描述】

输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。

输入格式
一系列以逗号分隔的英文人名

输出格式
包含不重复人名的列表,名字出现顺序与输入顺序相同

示例 
输入:
Calvin,bob,ada,McCord,Smith,Babbs,Calvin,Smith
输出:
['Calvin', 'bob', 'ada', 'McCord', 'Smith', 'Babbs']

【编程思路1】

        要去掉输入的英文人名中重复的名字,可以采用字典。因为字典中的键是唯一的,因此可以将输入的英文人名作为字典的键,值默认取 None。

        输出由字典键创建的列表即可。

        编写的源程序如下:

        image

【编程思路2】

        也可以采用集合去重,但本题要求输出包含不重复人名的列表中名字出现顺序与输入顺序相同,因此需要对由集合去重后产生的列表进行排序,按输入列表中元素的序号进行排序。

        为此,可以先将输入的英文人名字符串按‘,’切分后创建列表 ls,再由 ls 创建集合 set(ls) 去重,再由 set(ls) 创建列表 lt,将 lt 中的元素按其在 ls 中的序号排序。

        编写的源程序如下:

        image

        上述程序中的 4 条语句,也可以简写为如下的两条语句。

      image

【编程思路3】

        创建一个空列表 lt ,然后循环遍历保存输入的英文人名的列表 ls 中的每个元素,将不在列表 lt 中出现的元素添加到列表 lt 中,在 lt 中已出现的元素不再添加到 lt 中。这样 lt 列表中的元素既不重复,又与输入顺序一致。

        编写的源程序如下:

       image

posted on 2025-12-04 09:21  aTeacher  阅读(0)  评论(0)    收藏  举报