-3

基本上我有一个大清单:

# 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并且当且仅当它的负值也存在时,使用I 必须返回一个新列表。

前任。如果list = [-3,-2,-1,2,1,4] 它应该返回new_list = [2,1]

我必须使用 来执行此操作set,我真的迷路了。

4

2 回答 2

0

如果您set从使用 创建的列表中创建a big_list(),则可以使用它来创建所需的结果列表,方法是遍历集合的所有元素并选择所有值 > 0 且其负值也在集合中的元素。

您可以使用列表显示[]表达式(通常称为“列表理解”)来创建结果列表,其中包含括号内的一行很长的代码,就像big_list()函数一样。

希望这可以帮助。

于 2012-10-15T00:55:52.163 回答
0

将所有负数存储在一个集合中,然后得到与初始列表的交集:

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])
于 2012-10-14T23:03:52.380 回答