Python Takes List And Returns Only If Negative Value Also Exists Using Set
Basically I have a big list: # 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) ] And using a set
Solution 1:
Store all negative numbers in a set and then get the intersection with the initial list:
negatives = set(-x for x in data if x < 0)
numbers_with_negatives = negatives.intersection(data)
Demo:
>>>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])
Solution 2:
If you create a set
from a list created with big_list()
, you can use it to create a desired result list by iterating through all the elements of the set and selecting all those whose values are > 0 and whose negative value is also in the set.
You can use a list display expression, commonly call a "list comprehension", to create the resultant list with one long-ish line of code inside []
brackets, like the big_list()
function does.
Hope this helps.
Post a Comment for "Python Takes List And Returns Only If Negative Value Also Exists Using Set"