在python中如何比较两个列表,我们可以不区分大小写吗?

2024-06-13 23:57:09 发布

您现在位置:Python中文网/ 问答频道 /正文

如果当前_用户中存在“Maurya”,则不应接受“Maurya”作为可用用户名

current_users = ["amit", "ajit", "nishant", "mohit", "Maurya"]
new_users = ["deepak", "manish", "maurya", "akhil", "ajit"]

for new_user in new_users:
    if new_user in current_users:
        print(f"{new_user}, you need to enter new username!")
    else:
        print(f"{new_user}, This username is available.")

Tags: 用户innewusernamecurrentusers用户名print
3条回答
for new_user in new_users:
    for current_user in current_users:
        if new_user.lower() == current_user.lower():
            print('new user {} allready present'.format(new_user))

在我看来,一种更可靠的方法是使用case-folding,因为它对于比较不一定是平面印度名称的名称非常有用。此外,在性能方面,它恰好提供了比str.lower()更多的*方法

代码:

current_users = ["amit", "ajit", "nishant", "mohit", "Maurya"]
new_users = ["deepak", "manish", "maurya", "akhil", "ajit"]

for new_user in new_users:
  if new_user in map(str.casefold, current_users):
    print(f"{new_user}, you need to enter new username!")
  else:
    print(f"{new_user}, This username is available.")

输出:

>>> deepak, This username is available.
>>> manish, This username is available.
>>> maurya, you need to enter new username!
>>> akhil, This username is available.
>>> ajit, you need to enter new username!

但是所有其他的方法都很有效

如果你关心性能,并且你的投入很大,那么在回答solid.py给出的问题的基础上做几件事

  1. 将当前用户转换为集合
  2. 使用循环中的设置
current_users = ["amit", "ajit", "nishant", "mohit", "Maurya"]
current_user_set = {user.lower() for user in current_users}

new_users = ["deepak", "manish", "maurya", "akhil", "ajit"]

for new_user in [user.lower() for user in new_users]:
    if new_user in current_user_set:
        print(f"{new_user}, you need to enter new username!")
    else:
        print(f"{new_user}, This username is available.")

相关问题 更多 >