List Comprehension代替for循环不起作用



Udemy course:循环遍历密码列表中的项,如果项中包含字符串'ba'或'ab',则在每次迭代中打印出该项。

密码=[‘ccavfb’,‘baaded’,‘bbaa’,‘aaeed’,‘vbb’,‘aadeba’,‘aba’,"迪"、"戴德","abc","aae","制造"、"abb"、"空军联队"、"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))

这不起作用,然而,给了我这个错误:<生成器对象检查器。在0>我不知道这意味着什么,即使看了我的老朋友谷歌的帮助。我不明白为什么这个功能不工作,请帮助解释给我我错过了什么。我完全迷路了。

这是根据答案提示的预期结果

baaded
bbaa
aadeba
aba
abc
abb

即使这样做有效,也不会给你带来你想要的结果。如果你想使用这种风格,你必须要join

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

最新更新