2016-11-01 6 views
-4

저는 bisap을 사용하여 datapoint> -6의 첫 번째 발생을 찾습니다. 그러나 스크립트를 실행하면 두 번째 (및 마지막) 발생 만 찾습니다.어떻게 bisect가 내 의도를 찾지 못하니?

import bisect 

    kk = [-9, -6, -4, -6, -8, -8, -7, -7, -6, -6, -5] 

    first = bisect.bisect(kk, -6) 
    print(first) 

이 코드는 "10"을 출력하지만 "2"여야합니다. 아무도 그 이유를 말할 수 있습니까? 어리석은 질문에 대해 유감스럽게 생각합니다. 저는 파이썬을 처음 접했습니다! the documentation

+5

bisect는 이진 검색을 수행하므로 목록이 정렬되어 있다고 가정합니다. 당신은 분류되지 않았습니다. – Blender

답변

1

말한다 (강조는 추가) :

이 모듈은 에 대한 지원이 정렬 된 순서로 목록을 유지합니다 당신은 bisect으로 아무것도 할 수 전에 목록을 정렬해야

.

+0

알겠습니다. 처음으로 데이터가 임계 값에 도달 한 색인은 어떻게 찾을 수 있습니까? – Blochio

+0

@Blochio는 목록을 정렬하거나 선형 검색을 수행합니다. –

+0

@Blochio : 'bisect'가 무엇을 생각하는지, 왜 여기에서 사용하는지 확실하지 않습니다. 어떻게하면 (리스트에서 주어진 값의 첫번째 발생을 찾는 것과 같이) 어떻게하는지에 대한 질문이 있다면, 'bisect'에 대해 묻는 대신에 직접 질문하십시오. – BrenBarn