很抱歉,这个问题是否这么简单,但对于编码是全新的,并从Python开始。以下代码的目的是创建两个列表,并循环遍历“新用户”列表,并检查其中是否与current_users列表匹配,但我进行了一次匹配,但仍无法通过if中的给定打印来实现环。即使它们没有出现,它也会打印出它们都是唯一的。
new_user = ['roblew', 'keek', 'huh', 'lucas', 'xd']
current_user = ['roblew', 'adam', 'josh', 'alex', 'kiana']
for new_users in new_user:
if new_users == current_user:
print("Sorry " + new_users + " that username is taken")
else:
print("The username " + new_users + " is available!")
谢谢!
答案 0 :(得分:1)
如果有两个列表,查看是否存在任何公共元素的最简单(最快)方法是将它们转换为集合并使用交集运算符:
new_users = ['roblew', 'keek', 'huh', 'lucas', 'xd']
current_users = ['roblew', 'adam', 'josh', 'alex', 'kiana']
set(new_users) & set(current_users)
# => {'roblew'}
(我还自由地将变量名更改为复数,以更好地反映其内容。)
要检查列表中是否有单个元素,可以使用注释中提到的in
运算符;不过,这有点慢,因为in
检查每个元素以查看是否为该元素。因此,您也可以这样做,类似于您的代码:
for new_user in new_users:
if new_user in current_users: # note `in` instead of `==`!
print("Sorry " + new_user + " that username is taken")
else:
print("The username " + new_user + " is available!")
您还可以使用==
手动执行in
的操作,方法是对照每个元素检查每个元素:
for new_user in new_users:
for current_user in current_users:
if new_user == current_user:
print("Sorry " + new_user + " that username is taken")
break
else:
print("Sorry " + new_user + " that username is taken")
在这里,我使用了Python特有的for ... else
语法,其中else
仅在我不break
循环的情况下才会执行。