x보다 큰 목록에서 첫 번째 인덱스를 찾는 가장 Pythonic 방법은 무엇입니까?
예를 들어
list = [0.5, 0.3, 0.9, 0.8]
함수
f(list, 0.7)
돌아올 것이다
2.
답변
next(x[0] for x in enumerate(L) if x[1] > 0.7)
답변
목록이 정렬되면 bisect.bisect_left(alist, value)
큰 목록의 경우보다 빠릅니다 next(i for i, x in enumerate(alist) if x >= value)
.
답변
filter(lambda x: x>.7, seq)[0]
답변
>>> alist= [0.5, 0.3, 0.9, 0.8]
>>> [ n for n,i in enumerate(alist) if i>0.7 ][0]
2
답변
for index, elem in enumerate(elements):
if elem > reference:
return index
raise ValueError("Nothing Found")
답변
다른 것:
map(lambda x: x>.7, seq).index(True)
답변
1) NUMPY ARGWHERE, 일반 목록
numpy를 사용하는 것이 좋으면 일반 목록 (정렬 또는 정렬되지 않음)에서 다음이 작동합니다.
numpy.argwhere(np.array(searchlist)>x)[0]
또는 목록으로 답변이 필요한 경우 :
numpy.argwhere(np.array(searchlist)>x).tolist()[0]
또는 정수 인덱스로 답이 필요한 경우 :
numpy.argwhere(np.array(searchlist)>x).tolist()[0][0]
2) NUMPY SEARCHSORTED, 정렬 된 목록 (목록 검색에 매우 효율적)
그러나 검색 목록이 정렬되어 있으면 np.searchsorted 함수를 사용하는 것이 훨씬 더 깔끔하고 좋습니다 .
numpy.searchsorted(searchlist,x)
이 함수를 사용할 때 좋은 점은 단일 값 x를 검색 할뿐만 아니라 x도 목록이 될 수 있다는 것입니다. 즉, 검색된 값 목록 [x1, x2, x3 .. xn에 대한 색인 목록을 반환 할 수도 있습니다. ], ( 이 경우 목록 이해력에 비해 매우 효율적입니다 ).