2016-12-27 8 views
0

У меня есть два списка списков, которые я работаю на: L=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] A=[[1,2],[4,5]] Я хочу, чтобы сравнить L с А, что следующие результаты должны быть приложены в отдельном списке K=[3,6] Эта функция должна проверять первую строку списка A, т.е. [1,2], с первыми двумя элементами строки списка L, т.е. [1,2], и если они равны, третий элемент строки в List L будет храниться в отдельном списке K. Может ли кто-нибудь дать рабочий код или по крайней мере указать мне в правильном направлении?сравнивая два списка списков с неодинаковым размером каждого списка элементов

До сих пор я придумал это:

k=[] 
for i in range(len(L)): 
    if A[i][0]==l[i][0] and A[i][1]==L[i][1]: 
     k.append(L[i][2]) 

ошибка, что я получаю «IndexError: Индекс списка вне диапазона»

Заранее спасибо! :)

+0

Можете ли вы показать нам, что вы имеете пробовал? –

+2

также существует неопределенное поведение в текущей версии вашего вопроса ... например, может ли любая строка в 'L' соответствовать любой строке' A'? В качестве альтернативы, только строка 'L [i]' может соответствовать 'A [i]', если не перейти к 'A [i + 1]'. Это не ясно из вашего примера и объяснения. – cobarzan

+0

k = [] для i в диапазоне (len (A)): для j в диапазоне (len (A)): , если A [i] [j] == L [i] [j] и A [ i] [j + 1] == L [i] [j + 1]: print k k.append (L [i] [j + 2]) –

ответ

0

Это должно добиться того, что вы ищете (его немного неаккуратно использовать LEN(), и вы можете столкнуться с ошибкой, если ваши списки различаются по длине)

L=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] 
A=[[7,8],[4,5]] 
K=[] 
for x in range(len(A)): 
    for y in range(len(L)): 
     if A[x] == L[y][:2]: 
      K.append(L[y][2]) 
print K 
out: [9, 6] 
+0

Это работает! Большое спасибо за вашу помощь :) –

+0

Этот код не работает для следующего случая: L = [[1,2,3], [4,5,6], [7,8,9], [10, 11,12]] A = [[7,8], [10,11]] В этом случае выходной список K должен быть [9,12], но он выглядит пустым, поскольку он проверяет только с первые два элемента L. Можете ли вы это исправить? –

+0

Я создал отдельный цикл, который решает вашу проблему. Если у вас есть несколько списков в L с теми же двумя целыми целыми фронтами, то оба их третьих элемента будут добавлены. –

 Смежные вопросы

  • Нет связанных вопросов^_^