Пересечь 2 списка, сохранить результат в кортеже в Python - PullRequest
4 голосов
/ 02 марта 2012

Я думал, что у меня была общая проблема, но я не мог найти никакой помощи ни в Google, ни в SO.

У меня есть 2 списка, которые содержат объекты класса Marker. Marker состоит из переменных name, position и type. Я хочу пересечь два списка, создать кортежи маркеров одного типа и сохранить их в новом списке. В буквальном смысле я хочу сделать что-то вроде следующего:

g_markerList = [ (marker1,marker2) for marker1 in marker1List and marker2 in marker2List if marker1.type == marker2.type ]

Видимо, этот код не работает. Компилятор не «знает» переменную marker2 после and, что завершает предложение for.

Пожалуйста, помогите мне пересечь эти два списка и получить список кортежей с похожими маркерами!

1 Ответ

8 голосов
/ 02 марта 2012

Измените and на for:

g_markerList = [ (marker1,marker2) for marker1 in marker1List
                                   for marker2 in marker2List
                                   if marker1.type == marker2.type ]
...