繁体   English   中英

检查 2d 列表中的任何嵌套列表是否都包含一个值并且不包含另一个值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM