python list-仅保留正值或负值

时间:2018-08-31 08:34:51

标签: python python-3.x list

在Python中,我有一个包含数千个数字的列表(负数和正数)。

我想要的是消除列表中出现的正数和负数。因此,我只想保留列表中出现的数字,无论是正数还是负数。

示例:list = (1, 2, 3, -1, -2, -5, 6, 7, -6)应产生(3, -5, 7)

谢谢!

4 个答案:

答案 0 :(得分:3)

您可以通过set使用散列来确保平均情况下O(n)的复杂性。

from operator import neg

A = [1, 2, 3, -1, -2, -5, 6, 7, -6]
A_set = set(A)
exc = A_set & set(map(neg, A_set))
res = [i for i in A if i not in exc]

# [3, -5, 7]

答案 1 :(得分:1)

使用列表理解。

例如:

l = [1, 2, 3, -1, -2, -5, 6, 7, -6]
print([i for i in set(l) if -i not in l])

输出:

[3, -5, 7]

答案 2 :(得分:1)

仅使用设置:

from operator import neg

data = (1, 2, 3, -1, -2, -5, 6, 7, -6)
set_data = set(data)
set_neg = set(map(neg, set_data))

print(set_data & (set_data ^ set_neg))

给予:

{-5, 3, 7}

答案 3 :(得分:0)

我要做的是创建一个新列表来存储该列表。

尝试一下。

for i in list:
   op = i * -1
   if op not in list:
      newlist.add(i)