Python两个列表元素比较
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 in current_names] new_users = [new_user.lower() for new_user in new_users] for new_user in new_users: if new_user in current_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 += 1 21 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
1、如果修改不成功,不计入累积次数
2、如果修改成功,限制次数为3次
3、打印出目前列表
代码:
1 current_names = ["solo", "James", "echo", "JOY", "Tump", "AOBAMA", "新浪新闻", "新浪NEWS", 2 "新浪NBA", "ChinaNEWS"] # 随意列举几个 3 4 Num_Time = 0 #定义编辑次数,大于3次则退出 5 6 while Num_Time <= 3: 7 8 user_name = input("Please input your name:") 9 user_name = user_name.lower() 10 new_users = [] 11 new_users.append(user_name) 12 13 current_names = [current_name.lower() for current_name in current_names] # 列表解析 14 new_users = [new_user.lower() for new_user in new_users] 15 16 if user_name in current_names: 17 print(user_name + "用户名称已被占用,请重试。") 18 # Num_Time += 1 #如果是修改不成功,那么不算修改次数,直接不要累计就行了 19 20 else: 21 print(user_name + "用户名可以使用,请提交。") 22 current_names.append(user_name) 23 print("当前用户名为:" + user_name) 24 Num_Time += 1 25 # break 26 if Num_Time >=3: 27 print("每人一年内只能修改3次!")#3次是针对成功修改的操作 28 break 29 30 print("用户名称列表: " + str(current_names))
打印结果:
1、如果多次输入错误,不会对累积用影响。
2、成功修改三次后,跳出程序
3、打印出当前列表元素
1 Please input your name:solo 2 solo用户名称已被占用,请重试。 3 Please input your name:solo 4 solo用户名称已被占用,请重试。 5 Please input your name:solo 6 solo用户名称已被占用,请重试。 7 Please input your name:solo 8 solo用户名称已被占用,请重试。 9 Please input your name:ka 10 ka用户名可以使用,请提交。 11 当前用户名为:ka 12 Please input your name:la 13 la用户名可以使用,请提交。 14 当前用户名为:la 15 Please input your name:ji 16 ji用户名可以使用,请提交。 17 当前用户名为:ji 18 每人一年内只能修改3次! 19 用户名称列表: ['solo', 'james', 'echo', 'joy', 'tump', 'aobama', '新浪新闻', '新浪news', '新浪nba', 'chinanews', 'ka', 'la', 'ji']
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!