Ini adalah pertanyaan yang agak konseptual, tetapi saya berharap saya bisa mendapatkan saran yang bagus tentang ini. Banyak pemrograman yang saya lakukan adalah dengan array ( NumPy ); Saya sering harus mencocokkan item dalam dua atau lebih array yang ukurannya berbeda dan hal pertama yang saya tuju adalah for-loop atau bahkan lebih buruk, nested for-loop. Saya ingin menghindari for-loop sebanyak mungkin, karena mereka lambat (setidaknya dengan Python).
Saya tahu bahwa untuk banyak hal dengan NumPy ada perintah-perintah yang sudah ditentukan sebelumnya yang perlu saya teliti, tetapi apakah Anda (sebagai programmer yang lebih berpengalaman) memiliki proses pemikiran umum yang muncul di benak Anda ketika Anda harus mengulangi sesuatu?
Jadi saya sering memiliki sesuatu seperti ini, yang mengerikan dan saya ingin menghindarinya:
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]
Saya tahu ada beberapa cara berbeda untuk mencapai hal ini secara khusus, tetapi saya tertarik pada metode berpikir umum, jika ada.
I want to avoid for-loops as much as possible because they are slow (at least in Python).
Sepertinya Anda menyelesaikan masalah yang salah di sini. Jika Anda perlu mengulangi sesuatu, Anda perlu mengulangi sesuatu; Anda akan mendapatkan hit kinerja yang sama tidak peduli konstruk Python mana yang Anda gunakan. Jika kode Anda lambat, itu bukan karena Anda memiliki for
loop; itu karena Anda melakukan pekerjaan yang tidak perlu atau melakukan pekerjaan di sisi Python yang bisa dilakukan di sisi C. Dalam contoh Anda, Anda melakukan pekerjaan ekstra; Anda bisa melakukannya dengan satu putaran, bukan dua.