IT Share you

Python의 목록에서 일부 값의 첫 번째와 마지막 색인 찾기

shareyou 2020. 12. 14. 21:07
반응형

Python의 목록에서 일부 값의 첫 번째와 마지막 색인 찾기


다음과 같이 일부 값의 첫 번째 및 마지막 색인을 제공하는 목록의 일부인 내장 메소드가 있습니까?

verts.IndexOf(12.345)
verts.LastIndexOf(12.345)

시퀀스에는 index(value)첫 번째 발생 인덱스를 반환 하는 메서드 가 있습니다 verts.index(value).

verts[::-1]마지막 색인을 찾기 위해 실행할 수 있습니다 . 여기, 이것은len(verts) - 1 - verts[::-1].index(value)


사용 i1 = yourlist.index(yourvalue)i2 = yourlist.rindex(yourvalue).


myvaluein 의 마지막 발생 색인을 검색하는 경우 mylist:

len(mylist) - mylist[::-1].index(myvalue) - 1

작은 도우미 기능으로 :

def rindex(mylist, myvalue):
    return len(mylist) - mylist[::-1].index(myvalue) - 1

파이썬 목록에는 목록에서 항목 index()처음 나타나는 위치를 찾는 데 사용할 수 있는 메서드가 있습니다 . 참고 list.index()인상이 ValueError값이 목록에없는 경우, 그래서 당신이 그것을 포장 할 수 있습니다 try/ except:

try:
    idx = lst.index(value)
except ValueError:
    idx = None

목록에서 항목 마지막 발생 위치를 효율적으로 찾으려면 (즉, 반전 된 목록을 만들지 않고)이 함수를 사용할 수 있습니다.

def rindex(lst, value):
    for i, v in enumerate(reversed(lst)):
        if v == value:
            return len(lst) - i - 1  # return the index in the original list
    return None    

print(rindex([1, 2, 3], 3))     # 2
print(rindex([3, 2, 1, 3], 3))  # 3
print(rindex([3, 2, 1, 3], 4))  # None

이 방법은 위보다 더 최적화 할 수 있습니다.

def rindex(iterable, value):
    try:
        return len(iterable) - next(i for i, val in enumerate(reversed(iterable)) if val == value) - 1
    except StopIteration:
        raise ValueError

s.index(x[, i[, j]])

s에서 x의 첫 번째 발생 인덱스 (인덱스 i 이후 및 인덱스 j 이전)

참고 URL : https://stackoverflow.com/questions/522372/finding-first-and-last-index-of-some-value-in-a-list-in-python

반응형