Как математически вычитать элементы в двух списках на 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 - In и Not In List
  • Транспонирование матрицы в Python
  • Используя понимание списков в Python, чтобы сделать что-то похожее на zip ()?
  • Python для понимания словарей в словарях?
  • Использование определения списка для соответствия значениям словарей, которые хранятся в списках
  • Понимание Python-списка в Java
  • Python - поиск инкрементных нумерованных последовательностей с пониманием списка
  • Python - лучший язык программирования в мире.