将列表中的元素弹出到列表中 [Python 3.x]

Pop element from a list into a list [Python 3.x]

我正在 Python 制作 BlackJack 游戏,但它不遵守我的索引。它从我的所有子列表中弹出一个随机元素,而不仅仅是一个列表。

import random

class Deck(object):

    def __init__(self):
        self.deck_of_cards = []
        self.base = []
        for i in range(0, 13):
        troca = {
            0: 'A',
            10: 'J',
            11: 'Q',
            12: 'K'
        }
        if not i in (0, 10, 11, 12):
            self.base.append(i + 1)
        else :
            self.base.append(troca.get(i))

        for i in range(0, 4):
            self.deck_of_cards.append(self.base)


        def random_card(self, quantidade):
            print(self.deck_of_cards)
            for i in range(0, quantidade):
                 self.deck_of_cards[random.randint(0, 3)].pop(random.randint(0, 13))


        print(self.deck_of_cards)

bar = Deck()
bar.random_card(2)

看显着代码:

for i in range(0, 4):
    self.deck_of_cards.append(self.base)

您没有四个单独的子列表:您有四个对 相同 子列表的引用。如果您想要原件的四个副本,则必须制作这些副本。试试这个:

for i in range(0, 4):
    self.deck_of_cards.append(self.base[:])
for i in range(0, 4):
    self.deck_of_cards.append(self.base

您的列表 deck_of_cards 包含 4 个对您列表的引用 base

您需要在 deck_of_cards 中插入新列表,而不是同一个列表 4 次!

此外,此代码已损坏,但我会让您自己找出原因

self.deck_of_cards[random.randint(0, 3)].pop(random.randint(0, 13))