0

attrslistof (または実際にはtuples何かのリスト)です

したがって、このコードを実行すると、

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

戻ります

SyntaxError: invalid syntax

私の構文エラーは何ですか?

4

4 に答える 4

3

そこでジェネックスを使用することはできません。

if any('gold' in s for s in attrs):
于 2013-11-06T19:14:58.983 に答える
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.

問題は、リスト内包表記またはジェネレーター式を見たことだと思いますが、どちらも同様の構文を持っています。ただし、これらは適切に囲まれている場合にのみ機能します (つまり、[]またはで())。

于 2013-11-06T19:15:09.030 に答える
1

これは見た目が良くなります:

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

これがどのように機能するかは本当にわかりませんが。あなたは本当にしたくないですか:

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

ゴルフの観点からは、1行のソリューションの方が優れていることはわかっていますが、これは読みやすいかもしれません

于 2013-11-06T19:15:18.860 に答える
0

次のことができます。

if "gold" in (x for x in attrs):
    print "something"

と同じ:

 gen = (x for x in attrs):

 if "gold" in gen:
    print "something"
于 2013-11-06T19:18:11.750 に答える