これはかなり概念的な質問ですが、これについては良いアドバイスが得られることを望んでいました。私が行うプログラミングの多くは(NumPy)配列を使用しています。多くの場合、サイズの異なる2つ以上の配列のアイテムを一致させる必要があり、最初に行うのはforループまたはさらに悪いことにネストされたforループです。forループは(少なくともPythonでは)遅いので、できる限り避けたいです。
NumPyの多くのことには、調査するだけでよい事前定義コマンドがありますが、(経験豊富なプログラマーとして)何かを反復する必要があるときに思い浮かぶ一般的な思考プロセスがありますか?
だから私はしばしばこのようなものを持っていますが、これはひどいので避けたいです:
small_array = np.array(["one", "two"])
big_array = np.array(["one", "two", "three", "one"])
for i in range(len(small_array)):
for p in range(len(big_array)):
if small_array[i] == big_array[p]:
print "This item is matched: ", small_array[i]
特にこれを達成するための複数の異なる方法があることを知っていますが、もしあれば、一般的な考え方に興味があります。
I want to avoid for-loops as much as possible because they are slow (at least in Python).
ここで間違った問題を解決しているように聞こえます。何かを繰り返す必要がある場合は、何かを繰り返す必要があります。どのPythonコンストラクトを使用しても、同様のパフォーマンスヒットが発生します。コードが遅い場合、for
ループがあるからではありません。不要な作業を行っているか、C側で実行できるPython側で作業を行っているためです。あなたの例では、余分な仕事をしています。2つではなく1つのループで実行できます。