![](/img/trans.png)
[英]How to check if a 2D list contains a list that partly contains another list
[英]Check if any nested list within a 2d list both contains one value and does not contain another
我正在 python 中制作纸牌游戏,其中纸牌存储在二维列表中,其中列表的第一层是每张纸牌,第二层是纸牌具有的值。 我正在尝试制作一个if
语句来检查玩家手中是否有任何卡片(即列表中玩家手中的任何嵌套列表)包含 position 0 中的特定字符串并且不包含 integer position 5. 代码是这样的:
if ("Melee" in [x[0] for x in p1_hand] and 0 not in [x[5] for x in p1_hand])
(后面跟着一堆or
s 进行额外的检查,我知道这些检查工作正常并且不相关)
我读到另一个 Stack Overflow 问题,这是检查 2D 列表中是否存在项目的最有效方法,所以我这样做了。 但是,它不适用于我的目的。
我想做的是检查 p1_hand 中是否有任何项目,其中 position 0 ( p1_hand[x][0]
) 是“Melee”和 position 5 ( p1_hand[x][5]
) 不是 0 (我'm 实际上检查 is 是否为 1 或更高,但在此处使用运算符会返回错误)。 我目前拥有的代码的结果似乎是随机的,我无法追踪任何关于此if
语句何时返回 true 或 false 的模式。
我完全不知道如何让它工作,特别是如何制作一个可以适合if
语句中单行的工作解决方案(这对我正在尝试做的事情很重要)。
您正在检查是否有任何名为Melee
的卡和任何值不为 0 的卡。但它们不一定是同一张卡。
使用any()
function 测试列表中每张卡片的两种情况。
if any(x[0] == "Melee" and x[5] != 0 for x in p1_hand):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.