从包含浮点的元组列表中删除重复项

2024-09-27 07:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大小为2的元组的列表,其中有浮动。一些浮点数几乎相等,并且非常接近,可以认为是相等的。numpy isclose()在这里可以得到很好的效果。我需要删除列表中的重复项,同时始终保留第一个值。在

import numpy as np
data=zip(C1,C2)
comparray=[]
eval1=np.isclose(data[0],data[1])
comparray.append(eval1[0])
i=0
while i<(len(data)-1):
    eval=np.isclose(data[i],data[i+1])
    print eval
    comparray.append(eval[0])        
    i+=1
l1=[a for a,b in zip(data,comparray) if not b]

我有这个代码可以满足我的需要,但它看起来真的很差。有没有一种更像Python的方法? 谢谢你的帮助。在


Tags: importnumpy列表dataasevalnpzip
3条回答

你熟悉“集合”的结构吗?在

集合是无序的唯一元素的集合。我相信这种结构可以为您节省大量的开销,并且根据您的描述更适合您。在

https://docs.python.org/2/library/sets.html

如果我理解正确的话,你能做到的

out=[ a for a,b in zip(data,data[1:]) if not np.isclose(a,b) ]

但我不能真正测试这一点,因为您没有提供任何输入/输出示例。在

您可以像这样使用function

def nearly_equal(a,b,sig_fig=2):
    return ( a==b or 
             int(a*10**sig_fig) == int(b*10**sig_fig)
           )

>>>print nearly_equal(3.456,3.457)
True

相关问题 更多 >

    热门问题