python принимает список и возвращает только если отрицательное значение также существует, используя set

В основном у меня есть большой список:

# where (n) is over a couple hundred thousand or is 1 million def big_list(n): return [ randrange(-n//3,n//3) for i in range(n) ] 

И используя set я должен вернуть новый список, если и только если его отрицательное значение также существует.

Ex. если list = [-3,-2,-1,2,1,4] он должен вернуть new_list = [2,1]

Я должен сделать это с помощью set , и я действительно потерялся.

2 Solutions collect form web for “python принимает список и возвращает только если отрицательное значение также существует, используя set”

Храните все отрицательные числа в наборе, а затем получите пересечение с исходным списком:

 negatives = set(-x for x in data if x < 0) numbers_with_negatives = negatives.intersection(data) 

Демо-версия:

 >>> data [-3, -2, -1, 2, 1, 4] >>> negatives = set(-x for x in data if x < 0) >>> negatives set([1, 2, 3]) >>> negatives.intersection(data) set([1, 2]) 

Если вы создаете set из списка, созданного с помощью big_list() , вы можете использовать его для создания нужного списка результатов, итерации по всем элементам набора и выбора всех тех, значения которых> 0, а отрицательное значение которых также находится в задавать.

Вы можете использовать выражение отображения списка , обычно вызывать «понимание списка», чтобы создать результирующий список с одной длинной строкой кода внутри [] скобок, например, big_list() .

Надеюсь это поможет.

  • Почему моя функция «xmap» не быстрее, чем встроенная «карта»?
  • Асинхронное извлечение информации из процесса
  • Ошибка ввода списка Python
  • как создать новый метод с подписью другого
  • Когда и как использовать RLock Python
  • Почему мое значение переменной не передается блоку finally в python
  • Python проверяет, существует ли функция без попытки
  • Эффективное применение функции по перемещению окна numpy array
  • Python - лучший язык программирования в мире.