Разница в списке Python
Я пытаюсь найти все элементы, которые находятся в списке A, а не в списке B.
Я думал, что что-то вроде newList = list(set(a) & !set(b))
или newList = list(set(a) & (not set(b)))
будет работать, но это не так.
Если есть лучший способ добиться того, что я пытаюсь сделать, кроме этого?
newList = [] for item in a: if item not in b: newList.append(item)
Также важно, что это нужно сделать в Python 2.6
- Python: многострочный вход, преобразованный в список
- Абсолютное положение от относительного
- Разница между использованием и list () в Python
- Почему zip меняет мои списки?
- Получение суммы первых двух элементов в списке и вставка в начале – Python
Вы ищете установленную разницу :
newList = list(set(a).difference(b))
В качестве альтернативы используйте оператор минус:
list(set(a) - set(b))
Ты пробовал
list(set(a) - set(b))
Вот список всех операций набора Python .
Но это излишне создает новый набор для b
. Как упоминает @phihag, метод difference
предотвратит это.
Если вы заботитесь о поддержании порядка:
def list_difference(a, b): # returns new list of items in a that are not in b b = set(b) return [x for x in a if x not in b]
>>> list1 = [1,2,3,4,5] >>> list2 = [4,5,6,7,8] >>> print list(set(list1)-set(list2)) [1, 2, 3]
- Идентификатор файла OSError недоступен?
- Происхождение использования # в качестве комментария в Python?
- Как найти индексы совпадений в двух списках
- Проблема с списком Python
- Python – Как вычислить произведение a в последовательном количестве списка?
- Python, сравнить и рассчитать данные в списках
- Массив в python с произвольным индексом
- Метод захвата в выражении if в понимании списка
- Как разделить все элементы в списке вместе
- Найти первый экземпляр текста в строке из значений в списке
- Как создать многомерный массив из списков с помощью NumPy?