在扑克牌列表中寻找一对

Looking for pair in a list of playing cards

所以我正在 python 中创建纸牌游戏。对于我目前正在开发的游戏部分,我需要检查一系列扑克牌以查看是否有任何对。一对被认为是具有相同价值和颜色的两张牌。例如,红心K和方片K是一对,但红心K和梅花K不是。

我需要 return 一个删除所有配对的新列表。

假设我们有

list = ['9♠', '5♠', 'K♢', 'A♣', 'K♣', 'K♡', '2♠', 'Q♠', 'K♠', 'Q♢', 'J♠', 'A♡', '4♣', '5♣', '7♡', 'A♠', '10♣', 'Q♡', '8♡', '9♢', '10♢', 'J♡', '10♡', 'J♣', '3♡']

结果应该是:

list without pairs = ['10♣', '2♠', '3♡', '4♣', '7♡', '8♡', '9♠', '9♢', 'A♣', 'A♡', 'A♠', 'J♠', 'J♡', 'J♣', 'K♢', 'K♣', 'K♡', 'K♠', 'Q♠']

我目前有这个代码:

import random
result=[]

for i in range(len(l)):
    if '♣' in l[i]:
        pass
    elif '♠' in l[i]:
        pass
    elif '♡' in l[i]:
        pass
    elif '♢' in l[i]:
        pass

random.shuffle(result)
return result
cards_list = [
    "9♠",
    "5♠",
    "K♢",
    "A♣",
    "K♣",
    "K♡",
    "2♠",
    "Q♠",
    "K♠",
    "Q♢",
    "J♠",
    "A♡",
    "4♣",
    "5♣",
    "7♡",
    "A♠",
    "10♣",
    "Q♡",
    "8♡",
    "9♢",
    "10♢",
    "J♡",
    "10♡",
    "J♣",
    "3♡",
]    

SAME_COLORS = {"♢": "♡", "♡": "♢", "♠": "♣", "♣": "♠"}
    
list_without_pairs = []
for card in cards_list:
    if card[:-1] + SAME_COLORS[card[-1]] in cards_list:
        continue
    else:
        list_without_pairs.append(card)

print(list_without_pairs)

输出:

['9♠', '2♠', 'Q♠', 'A♡', '4♣', '7♡', '10♣', '8♡', '9♢', 'J♡', '3♡']

这项工作完全相同,但可能会更混乱一些:

list_without_pairs = [card for card in cards_list if card[:-1] + SAME_COLORS[card[-1]] not in cards_list]