본문 바로가기
파이썬

파이썬 Finding the indices of matching elements in list in Python

by º기록 2021. 1. 16.
반응형

"평균"이라고하는 1에서 5까지의 긴 부동 숫자 목록이 있고 a보다 작거나 b보다 큰 요소에 대한 인덱스 목록을 반환하고 싶습니다.

def find(lst,a,b):
    result = []
    for x in lst:
        if x<a or x>b:
            i = lst.index(x)
            result.append(i)
    return result

matches = find(average,2,4)

그러나 놀랍게도 "matches"에 대한 출력에는 많은 반복이 있습니다. <코드> [2, 2, 10, 2, 2, 2, 19, 2, 10, 2, 2, 42, 2, 2, 10, 2, 2, 2, 10, 2, 2, ...] .

왜 이런 일이 발생합니까?

 

해결 방법

 

목록에서 값의 처음 항목 만 찾는 .index () 를 사용하고 있습니다. 따라서 인덱스 2와 인덱스 9에 값 1.0이있는 경우 .index (1.0) 항상 2 를 반환합니다. 목록에서 1.0 이 발생하는 횟수입니다.


def find(lst, a, b):
    result = []
    for i, x in enumerate(lst):
        if x<a or x>b:
            result.append(i)
    return result

이것을 목록 이해력으로 축소 할 수 있습니다.

def find(lst, a, b):
    return [i for i, x in enumerate(lst) if x<a or x>b]

 

참조 페이지 https://stackoverflow.com/questions/16685384

 

 

반응형

댓글