attrs
是list
tuples
(或实际上是任何内容的列表)
所以当我运行这段代码时,
if "gold" in s for s in attrs:
print "something"
它返回
SyntaxError: invalid syntax
我的语法错误是什么?
答案 0 :(得分:3)
你不能在那里使用genex。
if any('gold' in s for s in attrs):
答案 1 :(得分:1)
你不能像这样放置for循环。这不是Python语法的工作方式。
也许你的意思是:
for s in attrs: # For each attribute...
if "gold" in s: # ...if "gold" is in it...
print "something" # ...print the message.
或者这个:
if any("gold" in s for s in attrs): # If any of the attributes have "gold"...
print "something" # ...print the message.
我认为问题在于您看到了list comprehension或generator expression,两者都有类似的语法。但是,只有当它们被正确封闭时才会起作用(即[]
或()
)。
答案 2 :(得分:1)
这看起来更好:
if "gold" in s:
for s in attrs:
print "something"
虽然我真的不确定这是如何工作的。你确定你不想要:
for s in attrs:
if "gold" in s:
print "something"
我从高尔夫的角度来看,一线解决方案更好,但这可能更容易阅读
答案 3 :(得分:0)
您可以执行以下操作:
if "gold" in (x for x in attrs):
print "something"
同样:
gen = (x for x in attrs):
if "gold" in gen:
print "something"