如何创建表示一副纸牌的元组列表?

How can I create a list of tuples representing a deck of cards?

我正在尝试制作一副扑克牌,其中每张都是一个元组。例如,值为 11 的卡片 'Ace of Hearts' 将是 (‘A’, ‘♥’, 11)。 如何在不使用 类 的情况下生成整个套牌并将其保存在列表中?

使用花色、纸牌和值的静态定义,您可以执行以下操作以使用列表推导式获取纸牌列表 - 然后牌组列表包含表示纸牌的元组。您可能希望根据您的要求更改值列表的定义方式。

suits = ['♠', '♥', '♦', '♣']
cards = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
values = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]


deck = [(c, s, v) for c, v in zip(cards, values) for s in suits]

您可以使用 collections.namedtuple,但我确实认为 类(尤其是 Enum.enum 是前往此处的方式):

from collections import namedtuple

Card = namedtuple("Card", ["rank", "suit"])

cards = []
for suit in "\u2660", "\u2665", "\u2666", "\u2663":
    for rank in "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K":
        cards.append(Card(rank, suit))

print(cards)