簡體   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