2017-05-24 11 views
0

두리스트가 교차하는 위치를 찾고 더 긴리스트를 사용하여 교차점의 인덱스 위치를 반환하려고합니다.길이가 다른 두리스트의 교차에 대한 인덱스를 가져옵니다.

현재 나는 작동하지만 그 못생긴 방법을 가지고있다. 범위 (0, len (a))로 for 루프를 설정하고 카운터 변수를 만들고 라운드 (a, 3)가 같거나 b보다 크면 카운터를 증가시키고 자리 표시 자 목록을 추가합니다.

나는 set.intersect를 사용해 보았고 행운이없는 것으로 평가했다. 나는 더 깨끗한 방법이 있다는 것을 압니다. 누구나 도움이 될 numpy를 사용하는 솔루션을 추천 할 수 있다면.

a = [0,0.14431, 0.1695151036, 0.2421644337, 0.2663808771, 0.4601124241, 0.4843288674, 0.5206535325, 0.6659521927, 0.7022768578, 0.7507097445, 0.8354672963, 0.9202248481, 0.9565495132, 1.0170906216] 


b = [0, 0.25, 0.50, 0.75, 1.0] 

내가 그것을 반환하고 싶습니다 : 예를 들어

output = [0,4,7,10,14] 

답변

0

그 동안이 내놓았다는 라인을 많이 줄일 수 있지만 더 빨리 이후 아직 확실하지 매 루프 전체를 반복합니다 (실제 파일의 목록은 실제로 10000 개의 항목과 같습니다)

placeholder = [] 
    for value in b: 
     match_min_value = min(a, key=lambda x:abs(x-value)) 
     placeholder.append(a.index(match_min_value))