You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用三层嵌套列表创建可扩展的扑克牌卡组?

解决方案

步骤1:绑定卡牌数值与名称

先把给定的values和names按索引一一绑定,因为两者是严格对应的(比如values[0]=11对应names[0]="A"):

values = [11, 10, 10, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2]
names = ["A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2"]
suits = ['Spade', 'Heart', 'Diamond', 'Club']

# 将数值和名称配对成元组列表
card_ranks = list(zip(values, names))

步骤2:生成单副扑克牌组

用嵌套列表推导式或itertools.product,把每个数值-名称对和所有花色组合,生成包含三个元素的子列表:

方法1:纯列表推导式(无需额外导入)

single_deck = [[val, name, suit] for val, name in card_ranks for suit in suits]

方法2:使用itertools.product(逻辑更直观)

from itertools import product

single_deck = [[val, name, suit] for (val, name), suit in product(card_ranks, suits)]

步骤3:扩展为多副牌

通过num_deck变量控制牌组数量,直接将单副牌列表重复对应次数即可:

num_deck = 2  # 示例:生成2副牌
full_deck = single_deck * num_deck

原方法失效的原因

你之前用itertools.product(range(1,14), suits)存在两个核心问题:

  1. range(1,14)生成的数值和你给定的values不匹配(比如A的数值是11而非1);
  2. 没有将数值与对应的names绑定,自然无法生成包含三个元素的卡牌条目。

按上述方法生成的牌组,每个子列表都会包含[数值, 名称, 花色],完全符合预期格式。

内容的提问来源于stack exchange,提问作者CapWater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:13:18