2017-12-18 4 views
0

다른 목록의 각 요소와 목록의 각 항목의 차이를 계산하고 싶습니다. 새 목록 C는 12 개 항목두 목록의 각 요소 간의 차이를 조정하십시오.

이 루프가 가능하지만,보다 빠르고 효율적인 방법이 물론
C=[1-5,1-6,1-7,2-5,2-6,2-7,....,4-7] 
C=[-4,-5,-6,-3,-4,-5,....,-3] 

을 가져야한다

A = [1,2,3,4] B=[5,6,7] 

두 목록 A와 B를 고려? 내 목록 A와 B는 8000과 2500의 치수를 가지고 있으며, 약 150 번 연속으로해야합니다. 미리 감사드립니다.

+0

는 루프를 사용해야 할 것 같은데. 목록의 모든 요소에 대해 데카르트 곱의 차이가 필요하면 데카르트 제품의 모든 쌍을 반복하는 방법이 없습니다 ... –

+0

계산은 계산입니다. 네가 여기서 반복하고 있다고 생각해. – Alan

+1

속도를 높이기 위해 numpy를 시도 할 수도 있지만 가능한 쌍마다 계산하여 액세스해야합니다. '[i-j for A in in B in B] '는 아마도 가장 우아한 선택 일 것이다. – bphi

답변

1

numpy

import numpy as np 

np.repeat(A,len(B))-np.tile(B,len(A)) 
Out[221]: array([-4, -5, -6, -3, -4, -5, -2, -3, -4, -1, -2, -3]) 
+0

완벽하게 작동합니다! 고마워요! – user9115313

+0

@ user9115313 yW :-), 행복한 코딩 – Wen

0

에서 repeattile를 사용하여 당신은 어떤 모듈을 가져 오지 않고 한 줄에 시도 할 수 있습니다 :

print(list(map(lambda x:list(map(lambda y:(x-y),b)),a))) 

출력 :

[[-4, -5, -6], [-3, -4, -5], [-2, -3, -4], [-1, -2, -3]] 

또는 지능형리스트를 사용하여 :

01 23,516,
print([(i-j) for i in a for j in b]) 

출력 :

[-4, -5, -6, -3, -4, -5, -2, -3, -4, -1, -2, -3] 
관련 문제