Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
236 views
in Technique[技术] by (71.8m points)

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 I must return a new list if and only if its negative value also exists.

Ex. if list = [-3,-2,-1,2,1,4] it should return new_list = [2,1]

I must do this using set, and I''m really lost.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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])

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...