在同一个列表中删除相同排名的对?

时间:2016-10-25 00:28:41

标签: python python-3.x

我有一个函数erasing_pairs(),它应该取一个字符串并返回一个列表r,其中所有对都被删除。

以下是该功能的预期结果:

def erasing_pairs(r):
    without_pairs=[]

    return without_pairs

基本上,我解释了期望的结果。这是我的一次尝试,但无济于事:

def erasing_pairs(r):
    without_pairs=[]
    without_pairs = [x for x in r if r.count((r[x][0])) == 1]
    return without_pairs

1 个答案:

答案 0 :(得分:0)

为方便起见,我将对您的数据进行一处小改动。使用10♠而不是T♠,这意味着您可以通过查看第一个字符来比较值。

先排序。这使得所有潜在的对彼此相邻,以便快速移除:

l.sort()
l.append([None]) # This helps check at the end of the list, 
                 # while avoiding accidentally reading beyond the end          
                 # of the list.

然后成对浏览列表,将所有未配对的项目添加到without_pairs

without_pairs = []
i = 1
while i < len(r):
    if r[i-1][0] != r[i][0]:
        without_pairs.append(r[i-1])
        i += 1
    else:
        i += 2    
return without_pairs