在两个列表中检查用户名

时间:2018-10-18 03:35:16

标签: python-3.x list

很抱歉,这个问题是否这么简单,但对于编码是全新的,并从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!")

谢谢!

1 个答案:

答案 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循环的情况下才会执行。