Dies ist eine eher konzeptionelle Frage, aber ich hatte gehofft, dass ich dazu einen guten Rat bekommen könnte. Ein Großteil der Programmierung, die ich mache, erfolgt mit ( NumPy ) Arrays. Ich muss häufig Elemente in zwei oder mehr Arrays unterschiedlicher Größe zuordnen. Als Erstes gehe ich zu einer for-Schleife oder, noch schlimmer, zu einer verschachtelten for-Schleife. Ich möchte for-Schleifen so weit wie möglich vermeiden, weil sie langsam sind (zumindest in Python).
Ich weiß, dass es für viele Dinge mit NumPy vordefinierte Befehle gibt, die ich nur erforschen muss, aber haben Sie (als erfahrenere Programmierer) einen allgemeinen Denkprozess, der Ihnen einfällt, wenn Sie etwas wiederholen müssen?
Also habe ich oft so etwas, was schrecklich ist und ich möchte es vermeiden:
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]
Ich weiß, dass es mehrere verschiedene Wege gibt, um dies zu erreichen, aber ich bin an einer allgemeinen Denkweise interessiert, falls es sie gibt.
I want to avoid for-loops as much as possible because they are slow (at least in Python).
Klingt so, als würden Sie hier das falsche Problem lösen. Wenn Sie über etwas iterieren müssen, müssen Sie über etwas iterieren. Sie werden einen ähnlichen Leistungstreffer erzielen, egal welches Python-Konstrukt Sie verwenden. Wenn Ihr Code langsam ist, dann nicht, weil Sie for
Schleifen haben. Das liegt daran, dass Sie unnötige Arbeit oder Arbeit auf der Python-Seite erledigen, die auf der C-Seite erledigt werden könnte. In Ihrem Beispiel erledigen Sie zusätzliche Arbeit. Du hättest es mit einer Schleife anstatt mit zwei machen können.