You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用random.shuffle洗牌后如何记录所有不同排列?

问题原因

因为cards是可变列表对象,你每次调用random.shuffle(cards)都是直接修改这个列表本身,而Shuffles.append(cards)添加的是这个列表的引用,不是新的列表。所以最终Shuffles里的所有元素其实都指向同一个cards列表,显示的自然就是最后一次洗牌后的结果。

解决方法

方法一:添加列表的副本到Shuffles

每次洗牌后,添加cards的副本而不是原列表的引用,这样每个副本都是独立的新列表,不会被后续的shuffle修改。可以用list(cards)或者cards.copy()来创建副本:

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

方法二:每次循环重新初始化cards列表

如果不想用副本,也可以在每次循环开始时重新创建cards列表,这样每次shuffle的都是新的列表对象,添加到Shuffles里的自然是独立的:

import random
Shuffles = []
for i in range(4):
    cards = ["Jack", "Queen", "King"]  # 每次循环重新创建列表
    random.shuffle(cards)
    Shuffles.append(cards)
print(Shuffles)

内容的提问来源于stack exchange,提问作者Brown Bakani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:46:01