如何在Python2中检查双元素列表,然后删除这两个元素

2024-09-30 22:22:34 发布

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

我有一个元素列表,我想检查双元素(没有元素会出现三次,只有一次或两次),然后我想删除这样一个元素的原件和副本。因此,最后我需要一个列表,其中包含在原始列表中只出现过一次的所有元素

列表中的元素都是行,所以我需要互相检查端点和起点,看看哪些行是相同的。我已经写了一些行,但似乎没有一行行行得通。我已经编写了一个小函数来检查行并查找双行,但我似乎无法解决如何删除列表中的副本和原始元素。这是查找双线的函数:

def cmp_lines(l1, l2):
   return(l1[0]==l2[0] and l1[1]==l2[1]) or (l1[0]==l2[1] and l1[1]==l2[0])

例如:

list = [Line([1,0],[2,1]), Line([1,3],[4,5]), Line([2,1],[1,0])]

newList = [Line([1,3],[4,5])]

使用Python2.x是一项要求


Tags: and函数元素l1列表line副本端点
1条回答
网友
1楼 · 发布于 2024-09-30 22:22:34

您应该编写一个函数,将行列表作为输入,并相应地对其进行过滤。如果两条线相等,该函数将使用cmp_线进行比较。 根据对象和类的定义调整以下方法

def filter_lines(lst) : # lst is the list of lines to filter
    for i in range(len(lst)) :
        is_unique = True
        for j in range(i+1,len(lst)) :
            if cmp_lines(lst[i],lst[j]) :
               lst.pop(j) #remove the lst[j] from the list
               is_unique = False #a same line was found
               break;
        if not is_unique : #The line lst[i] is unique
           lst.pop(i) #remove lst[i] from the list
    return lst

相关问题 更多 >