두 개의 중첩 목록과 공통 값에 대한 인덱스의 결합을 가져 오려고합니다.인덱스가있는 중첩 된 목록 2 개를 가진 python 공용체
A가 len(A)
와 인덱스 벡터 속한다 저는 두 A = [[1,2,3],[4,5,6],[7,8,9]]
및 B = [[1,2,3,4],[3,3,5,7]]
같은 목록하지만 각 목록의 길이가 약 100 000입니다 있습니다 I = [2,3,4]
내가 원하는 것은 여기서 첫 번째 B의 모든 하위 목록을 발견하는 것입니다 3 개의 요소는 A의 하위 목록과 같습니다.이 예제에서는 B[0]
이 반환됩니다 ([1,2,3,4]
). 그 첫 번째 세 요소는 A[0]
입니다. 또한이 예제에서 인덱스는 A[0]
, 즉 I[0]
입니다.
먼저 나는이 시도 :
Common = []
for i in range(len(B)):
if B[i][:3] in A:
id = [I[x] for x,y in enumerate(A) if y == B[i][:3]][0]
ctdCommon.append([int(id)] + B[i])
을하지만 그건 연령을지지 않습니다, 또는 결코
가 그럼 난A
및
B
을 전환 완료 세트에 넣고 양쪽에서 노조를 가져 갔다. 그것은 매우 빨랐다. 그러나 그 다음 나는 대응하는 인덱스를 얻는 방법을 모른다.
누구나 아이디어가 있습니까? -
: 일단 B의 하위 목록과 인덱스를 얻을 (작업
O(len(B))
입니다) B에. 제 두뇌는 그가 원하는 것을 이해하려고 애쓰는 것입니다. – MattH그것은 일하고 superquick! 정말 고맙습니다! – sbas