Я уже давно занимаюсь, казалось бы, простой проблемой и не могу найти простой ответ. Рассмотрим эти два списка списков:
a1 = [
[[0.3, 1.75, 2.1, 3.3, 4.66, 8.9, 11.34],
[0.3, 2.1, 3.3, 4.66, 8.9, 11.34],
[0.3, 1.75, 2.1, 3.3, 4.66, 8.9, 11.34],
[0.3, 1.75, 2.1, 3.3, 4.66, 8.9, 11.34]],
[[0.3, 1.75, 2.1, 3.3, 4.66, 8.9, 11.34],
[0.3, 1.75, 2.1, 3.3, 4.66, 8.9, 11.34],
[0.3, 1.75, 2.1, 4.66, 8.9, 11.34],
[0.3, 1.75, 2.1, 3.3, 4.66, 8.9, 11.34]]
]
a2 = [
[[2, 3, 5, 8, 13, 21, 35],
[2, 5, 8, 13, 21, 35],
[2, 3, 5, 8, 13, 21, 35],
[2, 3, 5, 8, 13, 21, 35]],
[[2, 3, 5, 8, 13, 21, 35],
[2, 3, 5, 8, 13, 21, 35],
[2, 3, 5, 13, 21, 35],
[2, 3, 5, 8, 13, 21, 35]]
]
их формы (N, M, P*)
, где P*
указывает, что количество элементов P
не одинаково во всех подсписках (но оно одинаководля подсписков в a2
с теми же индексами, что и подсписки в a1
). Иногда эти два списка будут полными , и все подсписки будут содержать одинаковые элементы, т.е. (в этом примере): 0.3, 1.75, 2.1, 3.3, 4.66, 8.9, 11.34
для всех подсписков в a1
и 2, 3, 5, 8, 13, 21, 35
для всех подсписков вa1
. В этом случае форма (N, M, P)
.
Мне нужен способ фильтрации обоих списков одновременно по элементам, которые можно найти в всех подспискахa1
. В приведенном выше примере элементы 1.75
и 3.3
отсутствуют в некоторых подсписках a1
, поэтому результаты будут такими:
a1_f = [0.3, 2.1, 4.66, 8.9, 11.34]
a2_f = [2, 5, 13, 21, 35]
, где 3
и 8
при удалении изa2
, поскольку они связаны с неповторяющимися элементами 1.75
и 3.3
, которые были удалены из a1
.
Мои фактические списки будут намного больше и будут иметь произвольную форму, поэтому япосле общего подхода. Элементы в обоих списках всегда будут упорядочены от минимального до максимального, но я не уверен, что это имеет какое-либо значение.
Любая помощь будет высоко ценится.