Сравните несколько списков внутри списка Python

Можно ли сравнить список, содержащий неизвестное количество списков с равными элементами, более кратко (то есть, короче), чем то, что я сделал? Желательно однострочник!

Вот пример, если неясно, что я хочу сделать:

a = [1, 2, 3]
b = [4, 2, 1]
c = [7, 5, 1]
d = [a, b, c]

def multiCompList(lists):
    final = [i for i in lists[0] if i in lists[1]]
    for i in range(2, len(lists)):
        final = [i for i in final if i in lists[i]]

    return final

print(multiCompList(d))

Я сначала проверил, содержат ли первый и второй список одинаковые элементы, и поместил их в список с именем final. После этого проверяем, можно ли найти эти элементы в списках после, и заменяем окончательный список оставшимися равными элементами. Результаты в этом случае: [1].

1 ответ

Oneliner будет выглядеть так:

set.intersection(*[set(x) for x in d])
#set([1])
Другие вопросы по тегам