Сравните несколько списков внутри списка 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])