python删除列表中重复元素

《Python编程 -- 从入门到实践》 练习5-10 中有需要删除重复元素的地方

检查用户名

按下面说的编写一个程序,模拟网站确保每位用户的用户名都独一无二的方式。

  1. 创建一个至少包含5个用户名的列表,并将其命名为current_users。
  2. 再创建一个包含5个用户名的列表,将其命名为new_users,并确保其中有一两个用户名也包含在列表current_users中。
  3. 遍历列表new_users,对于其中的每个用户名,都检查它是否已被使用。如果是这样,就打印一条消息,指出需要输入别的用户名(答案中没有指出关于输入别的用户名如何操作,我自己写了一下);否则,打印一条消息,指出这个用户名未被使用。
  4. 确保比较是不区分大小写的;换句话说,如果用户名'John'已被使用,应拒绝用户名'JOHN'。

 我自己写的答案代码如下:

#Practice 5-10

current_users = ['dawnhan', 'xiaogu', 'jack', 'tom', 'aily', 'lisa', 'John']
current_users_name = [username.lower() for username in current_users]  # 将所有元素都改为小写字母
new_users = ['Dawnhan', 'Lisa', 'Jaden', 'Tesen', 'john', 'aiken', 'John']
new_users_name = [username.lower() for username in new_users]
for new_user in new_users_name:
    if new_user in current_users_name:
        print(new_user.title() + ", that name is taken.Please input another username:")
        new_users_name.remove(new_user)
        username = input()
        username.lower()
        new_users_name.append(username)
    else:
        new_user.title()
        print("This username -- " + new_user + " haven't been used.")
newusers_name = [newname.title() for newname in new_users_name]
# 使用内置函数set;先将列表转换为集合,因为集合是不重复的,故直接删除重复元素,而且输出结果为排序后的
newusersname = list(set(newusers_name))

print("New users_name are:")
print(newusersname)

在最后查看新用户名的时候,将曾使用过的与重复的用户名删除后再打印出来

将重复用户名删除使用的是内置函数set(),先将列表转换为集合,因为集合是不重复的,故直接删除重复元素,而且输出结果为排序后的

删除曾使用过的用户名使用的是remove()

输出结果展示如下:(我在过程中输入了三次新的用户名:Jacken)

python删除列表中重复元素_第1张图片

书本自带答案如下:

current_users = ['eric', 'willie', 'admin', 'erin', 'Ever']
new_users = ['sarah', 'Willie', 'PHIL', 'ever', 'Iona']

current_users_lower = [user.lower() for user in current_users]

for new_user in new_users:
    if new_user.lower() in current_users_lower:
        print("Sorry " + new_user + ", that name is taken.")
    else:
        print("Great, " + new_user + " is still available.")

 输出结果:

python删除列表中重复元素_第2张图片

你可能感兴趣的:(Python学习,python)