attrs
list
of (または実際にはtuples
何かのリスト)です
したがって、このコードを実行すると、
if "gold" in s for s in attrs:
print "something"
戻ります
SyntaxError: invalid syntax
私の構文エラーは何ですか?
attrs
list
of (または実際にはtuples
何かのリスト)です
したがって、このコードを実行すると、
if "gold" in s for s in attrs:
print "something"
戻ります
SyntaxError: invalid syntax
私の構文エラーは何ですか?
そこでジェネックスを使用することはできません。
if any('gold' in s for s in attrs):
そのような 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.
問題は、リスト内包表記またはジェネレーター式を見たことだと思いますが、どちらも同様の構文を持っています。ただし、これらは適切に囲まれている場合にのみ機能します (つまり、[]
またはで()
)。
これは見た目が良くなります:
if "gold" in s:
for s in attrs:
print "something"
これがどのように機能するかは本当にわかりませんが。あなたは本当にしたくないですか:
for s in attrs:
if "gold" in s:
print "something"
ゴルフの観点からは、1行のソリューションの方が優れていることはわかっていますが、これは読みやすいかもしれません
次のことができます。
if "gold" in (x for x in attrs):
print "something"
と同じ:
gen = (x for x in attrs):
if "gold" in gen:
print "something"