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

Iを使用するsetと、その負の値も存在する場合にのみ、新しいリストを返す必要があります。

元。list = [-3,-2,-1,2,1,4] 返すべきならnew_list = [2,1]

を使用してこれを行う必要がありset、本当に迷っています。

4

2 に答える 2

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 に答える
0

setで作成されたリストからを作成する場合big_list()、それを使用して、セットのすべての要素を反復処理し、値が > 0 で、負の値もセットに含まれるすべての要素を選択することにより、目的の結果リストを作成できます。

一般に「リスト内包表記」と呼ばれるリスト表示式を使用して、関数[]のように、括弧内に長い 1 行のコードを含む結果のリストを作成できます。big_list()

お役に立てれば。

于 2012-10-15T00:55:52.163 に答える