簡體   English   中英

如何使用 for 循環從列表中刪除匹配項?

[英]How can I use for loop to remove match from a list?

我正在嘗試在 Python 中制作 Go Fish 紙牌游戲,但我在第一步中遇到了麻煩。 每次抽牌時,我都希望它在手中尋找匹配,如果匹配則將兩者都刪除。 本質上,“card”從牌組中彈出一張牌,“for”循環遍歷手牌進行匹配。 如果找到匹配項,則移除手中的牌,並且永遠不會將牌添加到手牌中(真的消失了。)通過使用 dubugger,我發現腳本會自動將彈出的牌放入手牌中到達“for”循環。 我有兩個問題:為什么它會這樣工作? 我怎樣才能做到這一點? 謝謝你!

ps 我還注意到比較面部卡片很困難,我將其表示為“A”、“K”、“Q”和“J”。 如果您有更好的解決方法,我願意接受建議,但否則我可以解決這個問題。

def draw_card(hand):
    # Handles very first card drawn. Adds card if hand is empty
    card = list.pop(cards)
    print('card is',card)
    for i in hand:
        print('Hand is: ',hand)
        if i == card:
            print(i,card)
            print('This value will be removed: ',i)
            hand.remove(i)
        else:
            hand.append(card)
    return hand

您不想遍歷手牌,只需使用in關鍵字查看手牌是否包含彈出的牌。 還有,什么是cards 我從 pop() 參數中刪除了它。 這樣,它只會從牌組中彈出最后一張牌。 最后,永遠不要使用list作為列表的名稱(它被保留為 Python 關鍵字)。 我把它改名為甲板。

def draw_card(hand):
    # Handles very first card drawn. Adds card if hand is empty
    card = deck.pop()
    print('card is',card)
    if card in hand:
        print('This value will be removed: ',card)
        hand.remove(card)
    else:
        hand.append(card)
    return hand

暫無
暫無

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

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