比较列表和忽略大小写的列表 Python 3.7 简化
Comparing list to list ignoring case in both of them Python 3.7 simplification
我正在学习 python 作为我的第一语言,并且我正在使用 Python 速成课程 作为我的第一本书。
在 自己尝试 5-10 部分有一个任务是创建两个列表并使用 for 循环将第二个列表与第一个列表进行比较,以检查用户名是否正确在系统中(忽略大小写)。
current_users = ['ana', 'JohN', 'sweeny', 'Bobcat', 'anthony']
current_users_lower = current_users[:]
for x in range(len(current_users)):
current_users_lower[x] = current_users_lower[x].lower() #nokope listi un partransforme visus uz lowercase
#print(current_users_lower)
new_users = ['polo', 'joHn', 'lamer', 'johan', 'boBcat']
#new_users = []
if new_users:
for new_user in new_users:
if new_user.lower() in current_users_lower:
print("Usernames are case sensitive - username " + new_user + " is taken, please choose another one and try again!")
else:
print("Registration successfull, your username is " + new_user)
else:
print("No usernames to input")
必须有更优雅的方法来比较两个小写字母的列表。
我这样做的方法是复制整个列表并将值转换为较低的值,并将新列表与转换后的列表进行比较,但这似乎是很多无用的工作。
任何指向简化的正确方向的提示都将不胜感激。
按预期工作,但在我看来很乱
输出:
enter image description here
您当前计算列表的方式current_users_lower
:
current_users_lower = current_users[:]
for x in range(len(current_users)):
current_users_lower[x] = current_users_lower[x].lower() #nokope listi un partransforme visus uz lowercase
可能就是这样:
current_users_lower = set(map(str.lower, current_users))
请注意,它会创建一个 集合 而不是一个列表,因为集合确实是您想要的(您没有使用列表的顺序)并使您的 ... in current_users_lower
检查更快(恒定时间而不是线性时间)。
我正在学习 python 作为我的第一语言,并且我正在使用 Python 速成课程 作为我的第一本书。
在 自己尝试 5-10 部分有一个任务是创建两个列表并使用 for 循环将第二个列表与第一个列表进行比较,以检查用户名是否正确在系统中(忽略大小写)。
current_users = ['ana', 'JohN', 'sweeny', 'Bobcat', 'anthony'] current_users_lower = current_users[:] for x in range(len(current_users)): current_users_lower[x] = current_users_lower[x].lower() #nokope listi un partransforme visus uz lowercase #print(current_users_lower) new_users = ['polo', 'joHn', 'lamer', 'johan', 'boBcat'] #new_users = [] if new_users: for new_user in new_users: if new_user.lower() in current_users_lower: print("Usernames are case sensitive - username " + new_user + " is taken, please choose another one and try again!") else: print("Registration successfull, your username is " + new_user) else: print("No usernames to input")
必须有更优雅的方法来比较两个小写字母的列表。 我这样做的方法是复制整个列表并将值转换为较低的值,并将新列表与转换后的列表进行比较,但这似乎是很多无用的工作。 任何指向简化的正确方向的提示都将不胜感激。 按预期工作,但在我看来很乱
输出: enter image description here
您当前计算列表的方式current_users_lower
:
current_users_lower = current_users[:]
for x in range(len(current_users)):
current_users_lower[x] = current_users_lower[x].lower() #nokope listi un partransforme visus uz lowercase
可能就是这样:
current_users_lower = set(map(str.lower, current_users))
请注意,它会创建一个 集合 而不是一个列表,因为集合确实是您想要的(您没有使用列表的顺序)并使您的 ... in current_users_lower
检查更快(恒定时间而不是线性时间)。