2016-01-24 2 views
0

Python новичок здесь. У меня есть четыре списка, три из которых представляют собой вложенные списки, а другой - нет. Я ищу способ zip вложенных списков с таким списком, чтобы функция zip сравнивала каждый вложенный элемент списка с соответствующим элементом в основном списке.Zip вложенный список со списком в Python

main = [1,3] 
a = [[1,2,3][4,5,6]] 
b = [[0,1,2][3,4,5]] 
c = [[2,3,4][5,6,7]] 

>>>[[[True, False, False],[False,True,False],[False,False,False]], 
[[False,False,False],[True,False,False],[False,False,False]]] 

Я пытался что-то вроде этого:

abc = zip(a,b,c) 
test = (x==y for x, y in zip(main,*abc) 

, но я получаю сообщение об ошибке «слишком много значений для распаковки». Какие-либо предложения?

+1

Это не совсем ясно, как '[Ложь, True, False]' относится к '[2, 1, 3]' –

+0

В ваших списках примеров отсутствуют некоторые запятые. И 'True' и' False' должны быть в верхнем регистре. –

+0

спасибо, исправно. – stdmn

ответ

2

Идея заключается в том, чтобы zip()main список с уже застегнул a, b и c списки и сделать вложенным list comprehension:

>>> [[[item == x for item in l] for l in lists] 
    for x, lists in zip(main, zip(a, b, c))] 
[[[True, False, False], [False, True, False], [False, False, False]], 
[[False, False, False], [True, False, False], [False, False, False]]] 
Смежные вопросы