簡體   English   中英

如何檢查列表中具有特定要求的所有元素?

[英]How to check all the elements in a list that has a specific requirement?

我正在做一個關於不同版本的心臟游戲的功課。 它說如果給我們一個列表mycards ,其中包含玩家當前持有的所有牌。 並且play是一張代表潛在牌的單張牌。如果所有牌都包含HEART( H )或QUEEN OF SPADES( QS ),它將返回True。

例如

>>> mycards= ['0H','8H','7H','6H','AH','QS']
>>> play = ['QS']

它將返回True

這是我試過的

if play[1] == 'H':
    return True
if play == 'QS':
    return True
else:
    return False

但我認為我的代碼只檢查列表中的一個QS和一個H. 如何制作包含all QS或H的代碼?

您的描述直接映射到解決方案:

編輯清晰:

mycards= ['0H','8H','7H','6H','AH','QS'] 
all((x == 'QS' or 'H' in x) for x in mycards)
#  True
>>> mycards= ['0H','8H','7H','6H','AH','QS']
>>> all(x[-1] == 'H' or x == 'QS' for x in mycards)
True

由於它是您的“家庭作業”,我不打算為您提供現成的代碼。 :)

使用循環遍歷列表:

例如:

for el in mycards:

在每次迭代時,您必須檢查兩個條件中的任何一個是否為真。

if el == 'QS' or el[1] == 'H':

如果卡是鍬的女王或心臟以上的情況將是真實的。 希望你能到現在為止。 如果條件不正確,只需返回False。

如果循環檢查了列表中的所有元素,但沒有返回False,那么所有的牌都是Spade的Queen或者Heart。 因此在循環結束后返回True。

試試你自己一段時間,如果仍然沒有得到我會根據你的要求發布代碼(但你必須告訴我你嘗試了什么:p)

編輯:既然你已經嘗試過,我也會發布代碼。

def HorQS(mycards):
    for i in mycards:
        if i != 'QS':
            if i[1] != 'H':
                return False
    return True

print HorQS(['0H','8H','7H','6H','AH','QS'])  # True
print HorQS(['0H','8H','7H','6H','AH','HS'])  # False
print HorQS(['0H','8H','7K','6H','AH','HS'])  # False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM