Здравствуйте! как можно удалить не нужный объект списка all_card, но при этом дальше вызывать из того списка значения для игры в покер

def card_deck(x):
    num = x
    deck_card = {}
    text = ""                  # название мастей                                         # сделать нужно вложенные словарь {масть: цифра}
    if 1 <= x <= 13:
        text = "черви"
    elif 14 <= x <= 26:
        num = x - 13
        text = "буби"                                                 # нужно сделать в функцииб в словаре цифру не превышающую 13, чтобы в будущем легче оформлять игру
    elif 27 <= x <= 39:
        text = "крести"
        num = x - 26
    else:
        text = "пики"
        num = x - 39
    deck_card[text]= num
    """if num == 1:
        deck_card[text] = "Туз"
    if num == 11:
        deck_card[text] = "Валет"
    if num == 12:
        deck_card[text] = "Дама"
    if num == 13:
        deck_card[text] = "Король"
    """
    return deck_card

#[[{}, {}], ...]
 #словарь с числами и строками, которые будут обозначать название карты
all_card = [{"черви": 1}, {"черви": 2}, {"черви": 3}, {"черви": 4}, {"черви": 5}, {"черви": 6}, {"черви": 8}, {"черви": 9}, {"черви": 10}, {"черви": 11}, {"черви": 1}, {"черви": 12}, {"черви": 13}, 
            {"буби": 1}, {"буби": 2}, {"буби": 3}, {"буби": 4}, {"буби": 5}, {"буби": 6}, {"буби": 7}, {"буби": 8}, {"буби": 9}, {"буби": 10}, {"буби": 11}, {"буби": 12}, {"буби": 13},
            {"крести": 1}, {"крести": 2}, {"крести": 3}, {"крести": 4}, {"крести": 5}, {"крести": 6}, {"крести": 7}, {"крести": 8}, {"крести": 9}, {"крести": 10}, {"крести": 11}, {"крести": 12}, {"крести": 13},
            {"пики": 1}, {"пики": 2}, {"пики": 3}, {"пики": 4}, {"пики": 5}, {"пики": 6}, {"пики": 7}, {"пики": 8}, {"пики": 9}, {"пики": 10}, {"пики": 11}, {"пики": 12}, {"пики": 13}]
total = 0
for _ in range(count_players):
    arr = []
    for _ in range(2):
        random_card = card_deck(randint(1, 52 - total))
        arr.append(random_card)
        total += 1
        del all_card[all_card.index(random_card)]

    card_players.append(arr)

Ответы (1 шт):

Автор решения: Алексей Р

Удалять элементы из списка в цикле - обычно непродуктивная идея. Если задача заключается в том, чтобы раздать все карты из колоды n-ному количеству игроков, то лучше сначала перемешать список, потом срезами раздать нужное кол-во карт каждому. В последнем элементе списка останется (или не останется, если кол-во карт делится без остатка на кол-во игроков) некое кол-во карт. Можно раздать не все карты, а каждому по m карт. Неплохо бы уточнить задачу.

import random

all_card = [{"черви": 1}, {"черви": 2}, {"черви": 3}, {"черви": 4}, {"черви": 5}, {"черви": 6}, {"черви": 8}, {"черви": 9}, {"черви": 10}, {"черви": 11}, {"черви": 1}, {"черви": 12}, {"черви": 13},
            {"буби": 1}, {"буби": 2}, {"буби": 3}, {"буби": 4}, {"буби": 5}, {"буби": 6}, {"буби": 7}, {"буби": 8}, {"буби": 9}, {"буби": 10}, {"буби": 11}, {"буби": 12}, {"буби": 13},
            {"крести": 1}, {"крести": 2}, {"крести": 3}, {"крести": 4}, {"крести": 5}, {"крести": 6}, {"крести": 7}, {"крести": 8}, {"крести": 9}, {"крести": 10}, {"крести": 11}, {"крести": 12},
            {"крести": 13},
            {"пики": 1}, {"пики": 2}, {"пики": 3}, {"пики": 4}, {"пики": 5}, {"пики": 6}, {"пики": 7}, {"пики": 8}, {"пики": 9}, {"пики": 10}, {"пики": 11}, {"пики": 12}, {"пики": 13}]
count_players, card_players = 7, []
cards_for_one = len(all_card) // count_players # или указать число карт, раздаваемое каждому игроку, например, 5
random.shuffle(all_card)
for i in range(0, len(all_card), cards_for_one):
    card_players.append(all_card[i:i + cards_for_one])
print(*card_players, sep='\n')
[{'пики': 7}, {'крести': 9}, {'пики': 5}, {'крести': 7}, {'крести': 2}, {'пики': 3}, {'крести': 6}]
[{'черви': 10}, {'крести': 1}, {'пики': 10}, {'пики': 4}, {'пики': 13}, {'пики': 12}, {'пики': 1}]
[{'черви': 8}, {'буби': 3}, {'крести': 11}, {'черви': 2}, {'буби': 2}, {'черви': 1}, {'пики': 11}]
[{'крести': 13}, {'буби': 4}, {'черви': 3}, {'черви': 9}, {'буби': 12}, {'пики': 2}, {'буби': 5}]
[{'черви': 4}, {'крести': 12}, {'крести': 10}, {'черви': 6}, {'пики': 9}, {'пики': 6}, {'черви': 11}]
[{'крести': 5}, {'буби': 9}, {'крести': 4}, {'крести': 8}, {'буби': 7}, {'буби': 6}, {'крести': 3}]
[{'буби': 13}, {'буби': 11}, {'буби': 8}, {'черви': 12}, {'черви': 5}, {'черви': 1}, {'буби': 10}]
[{'черви': 13}, {'буби': 1}, {'пики': 8}]
→ Ссылка