Как уже упоминалось @tobias_k, вы можете использовать Counter :
from collections import Counter
card_list = ["1P", "1C", "1O", "1E", "2P", "2C", "2O", "2E", "3P", "3C", "3O",
"3E", "4P", "4C", "4O", "4E", "5P", "5C", "5O", "5E", "6P", "6C", "6O",
"6E", "7P", "7C", "7O", "7E", "8P", "8C", "8O", "8E", "9P", "9C", "9O", "9E", "DP",
"DC", "DO", "DE", "JP", "JC", "JO", "JE", "VP", "VC", "VO", "VE", "RP", "RC", "RO", "RE",
"1P", "1C", "1O", "1E", "2P", "2C", "2O", "2E", "3P", "3C", "3O", "3E",
"4P", "4C", "4O", "4E", "5P", "5C", "5O", "5E", "6P", "6C", "6O", "6E", "7P", "7C",
"7O", "7E", "8P", "8C", "8O", "8E", "9P", "9C", "9O", "9E", "DP", "DC", "DO", "DE",
"JP", "JC", "JO", "JE", "VP", "VC", "VO", "VE", "RP", "RC", "RO", "RE", "1P", "1C",
"1O", "1E", "2P", "2C", "2O", "2E", "3P", "3C", "3O", "3E", "4P", "4C", "4O", "4E",
"5P", "5C", "5O", "5E", "6P", "6C", "6O", "6E", "7P", "7C", "7O", "7E", "8P", "8C",
"8O", "8E", "9P", "9C", "9O", "9E", "DP", "DC", "DO", "DE", "JP", "JC", "JO", "JE",
"VP", "VC", "VO", "VE", "RP", "RC", "RO", "RE"]
# print all cards
print card_list
# cards from a deck
cards_deck = ["1P", "1C", "1O", "1E", "2P", "2C", "2O", "2E", "3P", "3C", "3O",
"3E", "4P", "4C", "4O", "4E", "5P", "5C", "5O", "5E", "6P", "6C", "6O",
"6E", "7P", "7C", "7O", "7E", "8P", "8C", "8O", "8E", "9P", "9C", "9O", "9E", "DP",
"DC", "DO", "DE", "JP", "JC", "JO", "JE", "VP", "VC", "VO", "VE", "RP", "RC", "RO", "RE"]
counts = Counter(card_list)
while counts:
# remove deck cards from card pool
for card in cards_deck:
counts[card] -= 1
if counts[card] == 0:
counts.pop(card)
final_card = [card for card in counts.elements()]
# print remaining cards
print final_card
выход
['1P', '1C', '1O', '1E', '2P', '2C', '2O', '2E', '3P', '3C', '3O', '3E', '4P', '4C', '4O', '4E', '5P', '5C', '5O', '5E', '6P', '6C', '6O', '6E', '7P', '7C', '7O', '7E', '8P', '8C', '8O', '8E', '9P', '9C', '9O', '9E', 'DP', 'DC', 'DO', 'DE', 'JP', 'JC', 'JO', 'JE', 'VP', 'VC', 'VO', 'VE', 'RP', 'RC', 'RO', 'RE', '1P', '1C', '1O', '1E', '2P', '2C', '2O', '2E', '3P', '3C', '3O', '3E', '4P', '4C', '4O', '4E', '5P', '5C', '5O', '5E', '6P', '6C', '6O', '6E', '7P', '7C', '7O', '7E', '8P', '8C', '8O', '8E', '9P', '9C', '9O', '9E', 'DP', 'DC', 'DO', 'DE', 'JP', 'JC', 'JO', 'JE', 'VP', 'VC', 'VO', 'VE', 'RP', 'RC', 'RO', 'RE', '1P', '1C', '1O', '1E', '2P', '2C', '2O', '2E', '3P', '3C', '3O', '3E', '4P', '4C', '4O', '4E', '5P', '5C', '5O', '5E', '6P', '6C', '6O', '6E', '7P', '7C', '7O', '7E', '8P', '8C', '8O', '8E', '9P', '9C', '9O', '9E', 'DP', 'DC', 'DO', 'DE', 'JP', 'JC', 'JO', 'JE', 'VP', 'VC', 'VO', 'VE', 'RP', 'RC', 'RO', 'RE']
['1P', '1P', 'DO', 'DO', '3P', '3P', 'JP', 'JP', '5P', '5P', 'VC', 'VC', '3C', '3C', '1C', '1C', 'JO', 'JO', '1E', '1E', '5E', '5E', 'JE', 'JE', '8E', '8E', '3E', '3E', 'JC', 'JC', '7E', '7E', '2O', '2O', '7C', '7C', '9O', '9O', '7O', '7O', '9C', '9C', '9E', '9E', 'RE', 'RE', '5C', '5C', '7P', '7P', '9P', '9P', 'RO', 'RO', 'DE', 'DE', '2P', '2P', 'VE', 'VE', 'RC', 'RC', '4P', '4P', 'DC', 'DC', 'VP', 'VP', '4O', '4O', '2C', '2C', 'RP', 'RP', '4E', '4E', '4C', '4C', '8O', '8O', '1O', '1O', '6C', '6C', '6E', '6E', 'DP', 'DP', '2E', '2E', '8C', '8C', '5O', '5O', '6O', '6O', '6P', '6P', 'VO', 'VO', '3O', '3O', '8P', '8P']
['1P', 'DO', '3P', 'JP', '5P', 'VC', '3C', '1C', 'JO', '1E', '5E', 'JE', '8E', '3E', 'JC', '7E', '2O', '7C', '9O', '7O', '9C', '9E', 'RE', '5C', '7P', '9P', 'RO', 'DE', '2P', 'VE', 'RC', '4P', 'DC', 'VP', '4O', '2C', 'RP', '4E', '4C', '8O', '1O', '6C', '6E', 'DP', '2E', '8C', '5O', '6O', '6P', 'VO', '3O', '8P']
[]
Объяснение
Идея состоит в том, чтобы уменьшить количество каждой карты в card_deck
для каждой итерации цикла while, пока в counts
не будет карт. Когда количество карт достигнет 0, удалите их из counts
.