0

这个问题是关于如何在保留顺序的同时从列表中删除重复项的后续问题?.

我需要从列表中删除重复值或类似值:

我从该问题的答案开始并申请:

def f7(seq):
    seen = set()
    seen_add = seen.add
    return [ x for x in seq if x not in seen and not seen_add(x)]

但是当我将它应用于我的数据/数组时:,我得到这显然是错误的,因为粗体的值是相等的,应该删除一个

 [(Decimal('1.20149'), Decimal('1.25900')),
 *(Decimal('1.13583'), Decimal('1.07862'))*,
**(Decimal('1.07016'), Decimal('1.17773'))**,
 *(Decimal('1.13582'), Decimal('1.07863'))*,
  (Decimal('1.07375'), Decimal('0.92410')),
  (Decimal('1.01167'), Decimal('1.00900')),
**(Decimal('1.07015'), Decimal('1.17773'))**,
  (Decimal('0.95318'), Decimal('1.10171')),
  (Decimal('1.01507'), Decimal('0.79170')),
  (Decimal('0.95638'), Decimal('0.86445')),
  (Decimal('0.90109'), Decimal('0.94387')),
  (Decimal('0.84900'), Decimal('1.03060'))]

您将如何删除那些相同的值?

4

1 回答 1

3

seq从输出看,您传递的似乎包含 2 个元组。虽然元组的值可能相同,但元组本身(它们是序列的元素)却不同,因此不会被删除。

如果您的意图是获得唯一编号的平面列表,您可以先将其展平:

seq = [ (1,2), (2,3), (1,4) ]
f7(itertools.chain(*seq))
=> [1, 2, 3, 4]
于 2013-04-22T17:09:42.790 回答