Как математически вычитать элементы в двух списках на Python и выводить только те элементы, которые соответствуют условию?

У меня есть два списка, которые уже отсортированы с низкого на высокий:

A=['40','60','80'] B=['10','42','100'] 

Я хочу вычесть каждый элемент в A каждым элементом из B. Тогда, если разница между этими значениями соответствует условию, в частности, если оно меньше 5, тогда удалите оба элемента из каждого списка, где должен быть выход:

 A=['60','80'] B=['10','100'] 

** Иногда списки не равны по длине, а иногда в каждом списке всего 1 пункт

Я нашел много способов вычитать элементы в списках, но я не знаю, как извлекать и удалять определенные элементы в указанных списках или они вычитают только один элемент из каждого соответствующего элемента в противоположном списке

Использование лямбда:

if list (imap (lambda m, n: mn <5, A, B)) == Истина:

Использование imap, sub

 list(imap(sub, A, B)): 

Использование Numpy

 M = np.array([A]) N = np.array([B]) c = abs(MN) 

Большое спасибо.

2 Solutions collect form web for “Как математически вычитать элементы в двух списках на Python и выводить только те элементы, которые соответствуют условию?”

Без использования numpy:

 A = ["40", "60", "80"] B = ["10", "42", "100"] newA = filter(lambda a: all([abs(int(a) - int(b)) >= 5 for b in B]), A) newB = filter(lambda b: all([abs(int(a) - int(b)) >= 5 for a in A]), B) print newA print newB 
 A_dict = {} B_dict = {} for i in xrange(len(A)): if A[i] not in A_dict: A_dict[A[i]] = [] A_dict[A[i]].append(i) for i in xrange(len(B)): if B[i] not in B_dict: B_dict[B[i]] = [] B_dict[B[i]].append(i) for x in B_dict: for i in xrange(6): if x - i in A_dict: B_dict[x] = [] A_dict[xi] = [] A_new_idx = [] B_new_idx = [] for x in A_dict: A_new_idx.extend(A_dict[x]) for x in B_dict: B_new_idx.extend(B_dict[x]) A_new = [A[i] for i in sorted(A_new_idx)] B_new = [B[i] for i in sorted(B_new_idx)] 

Это имеет время работы O (n log n), так как максимальная разница, которую вы хотите удалить, равна 5 (константа). Должно быть намного быстрее наивного O (n ^ 2)

  • как получить кортежи из списков, используя понимание списка в python
  • Автоматическое упрощение / рефакторинг кода Python (например, для циклов -> понимание списка)?
  • Понимание списка Python с уникальными элементами
  • Как получить значение индекса для понимания списка?
  • понимание вложенного списка python
  • Используя понимание списков в Python, чтобы сделать что-то похожее на zip ()?
  • Вложенный список для dict
  • Python - понимание слов для слов, которые состоят не только из цифр
  • Значения Python для нескольких списков в одном понимании списка
  • Pythonic способ распечатать элементы списка
  • Поиск и группировка анаграмм Python
  • Python - лучший язык программирования в мире.