Я хочу получить объединение из 2 вложенных списков плюс индекс для общих значений.
У меня есть два списка, например A = [[1,2,3],[4,5,6],[7,8,9]]
и B = [[1,2,3,4],[3,3,5,7]]
, но длина каждого списка составляет около 100 000. А принадлежит индексный вектор с len(A)
: I = [2,3,4]
Я хочу найти все подсписки в B, где первые 3 элемента равны подсписку в A. В этом примере я хочу получить B[0]
return ([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
в наборы и взял объединение из обоих, что было очень быстро, но потом я не знаю, как получить соответствующие индексы
У кого-нибудь есть идея?