如何在 python 中使用列表和 for 循环对列表进行随机排序并记录不同的排列方式?

How can I shuffle a list and keep record of the different arrangements using lists and for loops in python?

提问人:Brown Bakani 提问时间:1/27/2023 更新时间:1/27/2023 访问量:40

问:

我想在每个循环中使用 random.shuffle() 洗牌 3 张牌,并将新排列添加到我的洗牌列表中。

import random
cards =["Jack","Queen","King"]
#random.shuffle(cards)
Shuffles =[]
for i in range(4):
    random.shuffle(cards)
    Shuffles.append(cards)
print(Shuffles)

相反,我得到的是一个包含最新洗牌的嵌套列表。每次顺序更改时,Shuffles 上添加的所有列表都会以某种方式更新为新的安排。 我应该怎么做才能跟踪嵌套列表中的所有不同排列?在此处输入图片描述

Python 循环 CS50 嵌套列表

评论

1赞 buran 1/27/2023
您最终会一遍又一遍地添加相同的对象。随机播放(或附加)列表的副本
0赞 Brown Bakani 1/27/2023
比你@buran🙏多,解决了。

答:

0赞 ilou 1/27/2023 #1

当您说 Shuffles.append(cards) 时,它会添加变量 cards,即您在开头定义的变量。你应该这样做:

import random
cards =["Jack","Queen","King"]
#random.shuffle(cards)
Shuffles =[]
for i in range(4):
    new_card_arrangement = random.shuffle(cards)
    Shuffles.append(new_card_arrengement)
print(Shuffles)

我希望它能帮助你,再见!

评论

0赞 Brown Bakani 1/27/2023
我尝试了类似的方法,但出现未定义“new_card_arrangement”的错误。
0赞 ilou 1/27/2023
@BrownBakani 我第二次写错了安排,但我认为如果你更正,它会起作用