python-3.x 列表解析代替for循环不起作用

au9on6nz  于 2022-12-01  发布在  Python
关注(0)|答案(1)|浏览(139)

Udemy课程:遍历密码列表中的项,如果项中包含字符串“ba”或“ab”,则在每次迭代中打印出该项。
密码=[“ccavfb”、“baaded”、“bbaa”、“aaeed”、“vbb”、“aadeba”、“aba”、“dee”、"dade“、”abc“、" aae”、“dded”、“abb”、“aaf”、“ffaec”]
我知道我可以为这个创建下面的for循环,它会起作用。

for x in passwords:
    if 'ab' in x or 'ba' in x:
        print(x)

但是我刚刚学习了列表理解,所以我尝试使用下面的函数来遍历循环。

def checker(passes):
    return (x for x in passes if 'ab' in x or 'ba' in x)

print(checker(passwords))

但是,这不起作用,并显示以下错误:〈generator object checker.. at 0x00000212414B4110〉我不知道这意味着什么,甚至在看了我的老朋友谷歌的帮助。\我不明白为什么这个功能不工作,请帮助解释给我我错过了什么。我完全迷路了。
这是根据答案提示的预期结果

baaded
bbaa
aadeba
aba
abc
abb
6pp0gazn

6pp0gazn1#

如果你想使用这种风格,你就必须用join

def checker(passes):
    return '\n'.join(x for x in passes if 'ab' in x or 'ba' in x)

相关问题