Đây là một câu hỏi khá khái niệm, nhưng tôi đã hy vọng tôi có thể nhận được một số lời khuyên tốt về điều này. Rất nhiều chương trình tôi làm là với các mảng ( NumPy ); Tôi thường phải ghép các mục trong hai hoặc nhiều mảng có kích thước khác nhau và điều đầu tiên tôi làm là một vòng lặp for hoặc thậm chí tệ hơn, một vòng lặp for lồng nhau. Tôi muốn tránh các vòng lặp càng nhiều càng tốt, vì chúng chậm (ít nhất là trong Python).
Tôi biết rằng đối với rất nhiều thứ với NumPy, có những lệnh được xác định trước mà tôi chỉ cần nghiên cứu, nhưng bạn (như những lập trình viên có kinh nghiệm hơn) có một quá trình suy nghĩ chung xuất hiện trong đầu khi bạn phải lặp đi lặp lại điều gì không?
Vì vậy, tôi thường có một cái gì đó như thế này, đó là khủng khiếp và tôi muốn tránh nó:
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]
Tôi biết có nhiều cách khác nhau để đạt được điều này nói riêng, nhưng tôi quan tâm đến một phương pháp tư duy chung, nếu nó tồn tại.
I want to avoid for-loops as much as possible because they are slow (at least in Python).
Âm thanh như bạn đang giải quyết vấn đề sai ở đây. Nếu bạn cần lặp đi lặp lại một cái gì đó, bạn cần lặp đi lặp lại một cái gì đó; bạn sẽ có một hiệu suất tương tự cho dù bạn sử dụng Python nào. Nếu mã của bạn chậm thì không phải vì bạn có for
vòng lặp; đó là bởi vì bạn đang làm những việc không cần thiết hoặc làm việc ở phía Python có thể được thực hiện ở phía C. Trong ví dụ của bạn, bạn đang làm thêm; bạn có thể thực hiện nó với một vòng thay vì hai vòng.