为什么这个语法无效,python

时间:2013-11-06 19:12:19

标签: python syntax-error

attrslist tuples(或实际上是任何内容的列表)

所以当我运行这段代码时,

if "gold" in s for s in attrs:
    print "something"

它返回

SyntaxError: invalid syntax

我的语法错误是什么?

4 个答案:

答案 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 comprehensiongenerator 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"