Python 创建一个函数,该函数返回从洗牌组中抽取的5张牌的列表,而不进行替换

Python 创建一个函数,该函数返回从洗牌组中抽取的5张牌的列表,而不进行替换,python,random,Python,Random,我正在创建一个函数,该函数返回从洗牌组中抽取的5张牌的列表,而不进行替换。我必须运行函数10000次,并计算5张牌包含4张同类牌的次数,例如:[“2张黑桃”,“3张梅花”,“2张钻石”,“2张黑桃”,“2张红桃]]。下面是我到目前为止的代码 import random suits = ['Spades','Clubs','Hearts','Diamonds'] cards = list('23456789JQKA') cards.insert(8,'10') deck = [card+' o

我正在创建一个函数,该函数返回从洗牌组中抽取的5张牌的列表,而不进行替换。我必须运行函数10000次,并计算5张牌包含4张同类牌的次数,例如:[“2张黑桃”,“3张梅花”,“2张钻石”,“2张黑桃”,“2张红桃]]。下面是我到目前为止的代码

import random


suits = ['Spades','Clubs','Hearts','Diamonds']
cards = list('23456789JQKA')
cards.insert(8,'10')
deck = [card+' of '+suit for card in cards for suit in suits]


def draw_wo_replacement(deck):
    for i in range (5):
        newdeck=[]
        index = random.randint(0,len(deck)-1)
        card = deck[index]
        deck.pop(index)
        newdeck.append(card)
    return newdeck
print(draw_wo_replacement(deck))

我试图打印的新数据组只输出一个值,不确定循环为什么不工作。我不确定如何运行这10000张卡,也不确定如何计算5张卡包含4张同类卡的次数

您希望在
draw\u wo\u replacement
函数中返回列表。所以,您必须首先创建一个空列表,并将所需内容附加到该列表中,然后返回新列表。但在这个函数中,您要做的是在每次迭代中创建新列表,并将新卡附加到列表中。因此,它将返回一个列表,列表末尾有一张卡片。(你想要的最后一张牌。你现在必须知道为什么)

只需将您的功能更改为:

def draw_wo__更换(甲板):
newdeck=[]
对于范围(5)中的i:
索引=random.randint(0,len(deck)-1)
卡片=卡片组[索引]
甲板弹出(索引)
newdeck.append(卡片)
返回新甲板

因为您正在循环中重新创建列表;仔细想想。既然您已经在使用
random
模块,那么您最好使用
random.sample(牌组,5)
从牌组中选择五张牌。