Как получить симметричную разницу более чем в двух списках?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как получить симметричную разницу более чем в двух списках?

Сообщение Anonymous »

Я хочу получить все эксклюзивные элементы между всеми моими списками. Итак, если у меня есть 3 списка типа:

Код: Выделить всё

list1 = [1, 3, 2]
list2 = ["a", 1, 3]
list3 = [2, 0]
Мой результат должен быть:

Код: Выделить всё

['a', 0]
Я пытался выполнить симметричное дифференцирование со всеми списками, например:

Код: Выделить всё

set(list1) ^ set(list2) ^ set(list3)
Но это не работает.

Я также пробовал:

Код: Выделить всё

def exclusive(*lista):
excl = set(lista[0])
for idx in range(len(lista)):
excl ^= set(lista[idx])
return excl
Это работает так же, как и первый метод, но он не дает того, что я хочу.

Тогда я попробовал (set(list1) ^ set(list2)) ^ (set(list2) ^ (set(list3))
и обнаружил, что это не то же самое, что я попробовал в первый раз.

РЕДАКТИРОВАТЬ:

В качестве примера я привожу 3 списка, но функция принимает неопределенное количество аргументов

Подробнее здесь: https://stackoverflow.com/questions/559 ... an-2-lists
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»