인덱스 찾는 함수...(질문 깔끔하게 정리)

조회수 88회

제가 원하는 바는 이거였습니다.

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)
  • list.index(3), list.index(2)로 각각은 구할 수 있는데 한 번에 구하는 식이 있나 궁금했습니다 magic0111 2020.3.26 14:43
  • 질문 수정기능 있습니다. 질문 하나로 정리하고 중복되는 것은 지우세요. daewon 2020.3.26 14:52
  • 죄송합니다. 지우는 기능은 어디서 찾을 수 있을까요? magic0111 2020.3.26 15:19
  • 다른 질문에 대답해드렸습니다 성재용 2020.3.27 18:24

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문을 실행했을 때와 어떻게 다른지는 직접 고민을 해 보시는 것이 좋을 것 같습니다.

  • 이미지

    단, 답변이 이미 달린 질문글은 삭제 버튼이 사라집니다. (댓글은 상관 없음)

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.