Python 如何从列表中删除多个重复项?

Python 如何从列表中删除多个重复项?,python,list,Python,List,我正在写一个程序,在两个玩家之间玩围棋 我目前一直在试图删除第一手交易中的重复项 这是我到目前为止的代码,它只删除了一个重复。我想知道是否有人可以帮助我提高它允许删除所有重复 #sorts player1 cards and removes the pairs player1.sort() print "hand for player 1:" print cards.hand_string(player1) newplayer1 = [] player1points = 0 newplayer

我正在写一个程序,在两个玩家之间玩围棋 我目前一直在试图删除第一手交易中的重复项

这是我到目前为止的代码,它只删除了一个重复。我想知道是否有人可以帮助我提高它允许删除所有重复

#sorts player1 cards and removes the pairs
player1.sort()
print "hand for player 1:"
print cards.hand_string(player1)
newplayer1 = []
player1points = 0

newplayer1, player1points = cards.drop_pair(player1)
print cards.hand_string(newplayer1)
s=黑桃 d=钻石 h=心脏 c=俱乐部

在这场游戏中,一名玩家每人将获得8张牌
TS TD JH QS QC AC AD AH

我的代码产生了这样的结果
JH QS QC AC AD AH
我希望它能产生这样的结果 金华


提前感谢您

您可以调用一次又一次删除一个重复的函数,直到没有重复为止。

如果顺序无关紧要,请使用set()或dict()。否则,您必须遍历整个列表并从列表中删除项目。或者,您维护有序列表,并通过第二个dict跟踪列表中的唯一项。在将新项插入列表之前,您首先检查dict中是否已存在该项-这对于大型列表是建议的-对于小型列表可能是过度使用。

使用集合

所以在我看来,这套衣服在搭配上并不重要。unique_hand_values=[h[0]表示手上的h]获取所有卡值的列表(无套牌)

从那里您可以循环和比较,因为它们是按顺序排序的:

for index, hand_value in enumerate(unique_hand_values): 
    if index + 1 < len(hand_value) and hand_value == unique_hand_values[index + 1]:
        # its a duplicate
对于索引,枚举中的指针值(唯一指针值):
如果索引+1
您为什么想要AH?您如何选择哪些ACE未配对?还是你真的只想要JH?
from itertools import groupby
from operator import itemgetter

player1 = ['TS', 'TD', 'JH', 'QS', 'QC', 'AC', 'AD', 'AH']
new_player1 = []

groups = groupby(player1, key=itemgetter(0))
for key, group in groups:
    group = list(group)
    if len(group)%2:
        new_player1.append(group[-1])

print new_player1