リスト内包のような巧妙なものは、動作の仕組みがまだわからないときには使用しないでください。結局のところ、単純なコードで読みやすいコードを使用することは完全にOKです。
この(わかりやすくするために、私は正規表現のナンセンスを左)試してみてください:あなたが最初の(または唯一の)試合にのみ関心がある場合、あなたは
haystack = ["foo", "bar", "baz", "foo", "qurx", "bother"]
needle = "foo"
for i, element in enumerate(haystack):
if needle in element:
print(haystack[i+1])
break
の場合を使用することができます
haystack = ["foo", "bar", "baz", "foo", "qurx", "bother"]
needle = "foo"
result = []
for i, element in enumerate(haystack):
if needle in element:
result.append(haystack[i+1])
print(result)
を正規表現を使用する代わりに等価でマッチさせることもできますが、これは最も簡単な方法です:
idx = haystack.index(needle)
result = haystack[idx+1]
例もし針が干し草の最後の位置に見つかったならば、上記のすべてが壊れますが、私はそれを読者に練習として残します。正しく独創的なアプローチを実装
、解決策は次のようになります:
pairs = zip(haystack, haystack[1:])
[following for matching, following in pairs if needle in matching]
出典
2016-12-02 17:37:19
hop
これは非常に悪いコードです。あなたはもっと簡単なものから始めるべきです。 – hop