이것은 다소 개념적 질문이지만 이것에 대해 좋은 조언을 얻을 수 있기를 바랍니다. 내가하는 많은 프로그래밍은 ( NumPy ) 배열을 사용합니다. 나는 종종 크기가 다른 두 개 이상의 배열에서 항목을 일치시켜야하며 가장 먼저 갈 것은 for-loop 또는 더 나쁜 것은 중첩 된 for-loop입니다. for 루프는 (최소한 파이썬에서는) 느리기 때문에 가능한 많은 루프를 피하고 싶습니다.
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).
여기에서 잘못된 문제를 해결하는 것 같습니다. 무언가를 반복해야하는 경우 무언가를 반복해야합니다. 어떤 파이썬 구조를 사용하든 비슷한 성능을 발휘합니다. 코드가 느리다면 for
루프 가 없기 때문이 아닙니다 . C 측에서 수행 할 수있는 불필요한 작업이나 Python 측 작업을 수행하기 때문입니다. 귀하의 예에서 추가 작업을하고 있습니다. 두 개가 아닌 하나의 루프로 할 수 있습니다.