인덱스 찾는 함수...(질문 깔끔하게 정리)
조회수 468회
제가 원하는 바는 이거였습니다.
list = [1,2,3,4] 가 있을 때
주어진 A = [3,2]이 있으면
다음 코드로 얻어지는 Answer을 더 쉽게 구하는 코드가 없나 궁금했습니다. 아래 코드는 for문을 써서 그런지 list 길이가 커서 계산속도를 많이 잡아먹는 것 같습니다.
Answer = []
for i in range(0,len(list)):
if list[i] in A:
Answer.append(i)
2 답변
-
"한 번에" 가 의미하는 바가 무엇인가요?
코드 한 줄을 의미하는 건가요?
아니면 각각의 리스트를 한 번만 탐색한다는 건가요?
list의 길이를 n, a의 길이를 m이라고 했을 때, 두 경우 모두 최악의 상황을 가정하면
for문을 사용했을 때 탐색하는 element의 개수는 n * m,
index를 사용했을 때 탐색하는 element의 개수는 m * n 으로
실행시간에 큰 차이가 있을 것 같지는 않습니다.
for문을 사용했을 경우 정답을 찾았더라도 계속 탐색하기 때문에 시간이 더 걸리는 대신 중복값도 찾을 수 있고, index는 반대로 정답을 찾으면 탐색을 그만두기 때문에 시간이 조금 덜 걸리는 대신 중복값을 찾지 않고 넘어간다는 점이 다르겠네요.
그냥 한 줄로 실행되는 코드를 원하셨던거라면 아래와 같이 해보세요.
>>> list = [1, 2, 3, 4] >>> a = [3, 2] >>> list(map(lambda x: list.index(x), a)) [2, 1]
다만 이것이 for문을 실행했을 때와 어떻게 다른지는 직접 고민을 해 보시는 것이 좋을 것 같습니다.
-
댓글 입력