python - 将两个列表的笛卡尔积作为列表列表
问题描述
我是 Python 的初学者。
我一直在努力为我的纸牌创建正确的列表理解。我想在每个“数字索引”具有合适类型的列表中创建四个列表。我将尝试在下面显示。
这就是我要的:
deck = [["1 Hearts, "2H", ..."13H"], ["1 Diamonds", "2D", ..."13D"], [....], [...]]
这就是我所拥有的:
value = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"]
deck_types = ["hearts", "diamonds", "clubs", "spades"]
deck = [[i] + value for i in deck_types]
输出:
我不能发布图片,因为我的声誉低于 10,但我会描述它。
[["hearts", "1", "2", "3"....], ["Diamonds", "1", "2", "3"....], ["Clubs", "1"...], [....]]
如您所见,这并不是我想要的。每种类型都成为每个子列表中的 nr [0]。我的计划是将 .pop() 函数与 random.randint 结合起来进行抽牌。因此,当第一个玩家抽一张牌时,该牌将从牌组中移除。然后第二个玩家将无法抽到同一张牌。然后,当我打印第一张玩家卡时,我希望能够同时看到类型和编号。到目前为止,我只能看到数字。
像这样:
card1 = deck[random.randint(1, 3)].pop(random.randint(2, 13))
card2 = deck[random.randint(1, 3)].pop(random.randint(2, 13))
解决方案
好吧,您只需要多一层列表。
deck = [[x+y for x in value] for y in deck_types]
推荐阅读
- bash - 从 bash 脚本运行 wp-cli 会导致路径错误
- java - Android -Permission Denial:编写 com.android.providers.downloads.DownloadStorageProvide
- c# - 从异步任务返回
- java - JDBC Netbeans java+mysql 项目连接语句显示错误,`错误的符号类型:java.lang.Object.getConnection`
- vbscript - 如何使用 asp classic 获取 12 个月前的月份名称?
- python - Openpyxl:工作表没有对象删除行错误
- c++ - 如何使用 Qt 类编译 rpcgen 文件?
- nlp - 公司沟通自然语言分析的流程和进展?
- laravel - Eloquent:获取更改的列
- python - 有没有固定长度的列表理解的方法?