TransWikia.com

Сравнение списков и приведение к нижнему регистру (Python)

Stack Overflow на русском Asked by Dasler on December 10, 2020

дано два списка пользователей, нужно их сравнить в нижнем регистре и если имя занято вывести что невозможна регистрация.
На выдаче дает имя в нижнем регистре, как сделать чтобы был сохранен изначальный регистр new_users

users = ['John', 'mIke', 'Mary', 'lian', 'kira']
n_users = []
for n_user in users:
    n_users.append(n_user.lower())
new_users = ['jJy', 'henry', 'jey', 'Kira', 'Mary']
n_new_users = []
for n_new_user in new_users:
    n_new_users.append(n_new_user.lower())
for nnr in n_new_users:
    if nnr in n_users:
        print(nnr + ' you can not join us, incorrect name')
    else:
        print(nnr + ' the name is available')

One Answer

Ну как-то так:

users = ['John', 'mIke', 'Mary', 'lian', 'kira']
users_lower_set = set(map(str.lower, users))
new_users = ['jJy', 'henry', 'jey', 'Kira', 'Mary']
for new_user in new_users:
    if new_user.lower() in users_lower_set:
        print(new_user + ' you can not join, us incorrect name')
    else:
        print(new_user + ' the name is available')

На выходе:

jJy the name is available
henry the name is available
jey the name is available
Kira you can not join, us incorrect name
Mary you can not join, us incorrect name

Пояснения.

  • Старайтесь давать "говорящие имена" переменным. n_new_user - что здесь значит n_? Непонятно. Вот users_lower и new_users_lower было бы понятнее.
  • Проверять на вхождение лучше поместив список в котором ищем в set, так гораздо быстрее (если список большой) - сложность порядка O(1).
  • Функцию lower спокойно можно использовать прямо в if, чтобы не "портить" значение самой переменной.

Correct answer by CrazyElf on December 10, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP