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

井字棋开发:如何判断玩家输入包含嵌套列表中的赢局组合?

井字棋赢局判断问题解决方案

问题根源

你写的set(a).issubset(b)会触发TypeError,因为列表是不可哈希类型,无法直接将嵌套列表a转换为集合。

正确实现方式

要判断玩家输入列表b是否包含任意一个赢局组合,只需按以下逻辑处理:

  • 将玩家输入b转为集合(集合天然忽略元素顺序,且子集判断效率更高)
  • 遍历赢局列表a中的每个子组合,将其转为集合后,检查是否是b集合的子集
  • 只要有一个赢局组合满足条件,就返回True

代码示例

a = [[1, 3, 4],[1,7,9]]
b = [1, 7, 0, 9]

b_set = set(b)
# 用any()遍历赢局组合,找到第一个符合条件的就停止
is_win = any(set(win_comb).issubset(b_set) for win_comb in a)
print(is_win)  # 输出: True

额外说明

  • any()函数会短路求值,一旦找到满足条件的赢局组合就立即终止遍历,避免不必要的计算
  • 集合的issubset()方法完美匹配需求:只要赢局的所有元素都存在于玩家输入中,无论顺序和额外元素多少,都会返回True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:22:06