두 개 이상 원소 인덱스 찾기( python)

조회수 47회

예를 들어 리스트 l=[1,3,2,4]에서 2,3이 있는 index를 찾고 싶어서 l.index([2,3])으로 했더니 에러가 납니다. 어떻게 식을 구성해야 될까요 이 경우에 답은 [2,1]가 되겠지요

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    이 답변의 이전 질문에 의한 답변입니다. 위 질문에 대한 답변은 아래에 있습니다.

    인덱스의 배열이 주어졌을 때, 배열의 원소들의 배열을 구하는 것입니다.

    먼저 대괄호[, ]로 하는 방법은 없습니다. 그래서 다른 방법을 써야 하는데, 2가지 방법을 알려드리겠습니다. 그런데, 그 전에 파이썬의 인덱스는 0-based 임을 알아두셔야 합니다. 이는 첫번째 원소가 0번째 원소라는 뜻입니다.

    예)

    >>> l = [1, 3, 2, 4]
    >>> l[0]
    1
    

    1. map 함수 사용

    >>> list(map(lambda x: l[x], [1, 2]))
    [3, 2]
    

    map은 파이썬의 내장 함수로 오른쪽의 배열을 돌면서 함수를 적용하는 역할을 합니다.

    2. 배열 생성

    >>> [l[x] for x in [1, 2]]
    [3, 2]
    

    이 방법은 한줄 for문인데, 짧게 코드를 작성할 수 있어서 많이 쓰입니다.


    질문에 대한 답변

    먼저 index 메소드는 정수를 파라미터로 받는 메소드입니다. 그래서 위와 비슷하게 다음과 같이 할 수 있습니다.

    1. map 함수 사용

    >>> list(map(l.index, [2, 3]))
    [2, 1]
    

    2. 배열 생성

    >>> [l.index(x) for x in [2, 3]]
    [2, 1]
    

    크게 두가지 방법 중 하나를 쓰시면 될 것 같습니다.

    • 제가 질문을 잘못 올렸습니다. 말씀해주신 것과 반대로 index를 찾고 싶었습니다. 혹시 이 질문에 대해 답해주실 수 있나요? magic0111 2020.3.26 14:11
    • 수정했습니다 성재용 2020.3.27 13:15

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

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

(ಠ_ಠ)
(ಠ‿ಠ)

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

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