Python多次shuffle范围数值后extend拼接输出的代码问题排查
Python多组随机洗牌代码问题排查
你的代码存在3个核心逻辑错误,导致无法生成多组结果:
- 计数组数的变量
x被错误放在遍历单组元素的for循环内累加:运行第一组时x会在遍历1-5的过程中快速增加到等于设置的组数2,while循环直接终止,自然无法运行第二组 - 打印逻辑错误:for循环内你打印的是
e[x]而非当前遍历到的元素i,输出内容不符合需求 extend用法错误:你每次遍历单个元素时就把整个e列表作为元素追加到d中,而非把洗牌后的整组元素追加到d末尾
修复后可正常运行的代码
import random a = 1 # 最小值 b = 5 # 最大值 c = 2 # 组数 d = [] # 存储最终所有元素 x = 0 base_list = list(range(a, b+1)) while x < c: # 洗牌:直接修改原列表 random.shuffle(base_list) # 把当前洗牌后的整组元素追加到结果列表 d.extend(base_list) # 组数计数+1,放在while循环末尾,每组跑完才计数 x += 1 # 逐行打印所有结果 for num in d: print(num)
运行效果示例(随机结果,每次运行不同)
3 1 5 2 4 2 5 3 1 4
内容的提问来源于stack exchange,提问作者Alex Elfont
相关产品推荐
相关产品推荐

