Python两个列表元素的对比经常遇到,如何正确的比较?
知识点:列表解析。
详解:
列表解析 List Comprehensions
表达式:[expression for iter_val in iterable if cond_expr]
[expression]:最后执行的结果
[for iter_val in iterable]:这个可以是一个多层循环
[if cond_expr]:两个for间是不能有判断语句的,判断语句只能在最后;顺序不定,默认是左到右。
代码操作:
current_names = ["java","go","selenium","appium","python"]
new_users= ["java","go","javascript","HTTP","C++"]
current_names= [current_name.lower() for current_name incurrent_names]
new_users= [new_user.lower() for new_user innew_users]for new_user innew_users:if new_user incurrent_names:print(new_user + "用户名已被使用")else:print(new_user + "用户名可以使用")
运行结果:
java 用户名已被使用
go 用户名已被使用
javascript 用户名可以使用
http 用户名可以使用
c++ 用户名可以使用
拓展练习:
设置微博名时,常会遇到"用户名已被占用"情况,那么如何使用Python进行简单的实现?
设计思路:
1、设置一个列表,用于存储全网用户名称(新名称则添加、替换名称则自动删除)
2、用户提交名称时,列表进行一次查询,查看是否有重复,并做相关提示
3、不区分大小写,即:PYTHON/Python/python/pYTHOn....默认是一个名字,提交会提醒重复。
代码如下:
1 """
2
3 current_names = ["solo", "James", "echo", "JOY", "Tump", "AOBAMA", "新浪新闻", "新浪NEWS",4 "新浪NBA", "ChinaNEWS"] # 随意列举几个5
6 Num_Time = 0 #定义编辑次数,大于3次则退出7
8 while Num_Time <= 3:9
10 user_name = input("Please input your name:")11 user_name = user_name.lower()12 new_users = []13 new_users.append(user_name)14
15 current_names = [current_name.lower() for current_name in current_names] # 列表解析16 new_users = [new_user.lower() for new_user in new_users]17
18 if user_name in current_names:19 print(user_name + "用户名称已被占用,请重试。")20 Num_Time += 121
22 else:23 print(user_name + "用户名可以使用,请提交。")24 current_names.append(user_name)25 print("当前用户名为:" + user_name)26 print("用户名称列表: " + str(current_names))27 break
运行结果:
Please input your name:solo
solo用户名称已被占用,请重试。
Please input your name:nbs
nbs用户名可以使用,请提交。
当前用户名为:nbs
用户名称列表: ['solo', 'james', 'echo', 'joy', 'tump', 'aobama', '新浪新闻', '新浪news', '新浪nba', 'chinanews', 'nbs']
Process finished with exit code 0
如果让加入的新名称一直存放在列表中,并且修改成功后还可以继续修改,代码如何操作?