в python, как сравнение двух списков мы можем сделать нечувствительным к регистру?

#python #for-loop #if-statement

#python #для цикла #if-statement

Вопрос:

Если «Maurya» присутствует в current_users, то «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.")
  

Ответ №1:

Если вы заботитесь о производительности, и ваш вклад большой, сделайте пару вещей поверх ответа, который 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.")
  

Ответ №2:

 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))
  

Комментарии:

1. Вы должны добавить текст к ответу

2. да, я должен. Мне пришлось оставить это на полпути из-за какой-то чрезвычайной ситуации.

Ответ №3:

Более надежный подход, на мой взгляд, заключается в использовании сгибания регистра, поскольку это будет полезно для сравнения имен, которые не обязательно являются плоскими индийскими именами. Кроме того, с точки зрения производительности это обеспечивает больше *, чем метод 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!
  

Но все остальные методы работают как шарм! 🙂