如何生成5个含1-100不重复数字的随机列表并修复Python代码报错
报错原因
- 核心错误:你执行
All_list.append(list)时,追加的是Python内置的list类型本身,不是空的列表实例。直接调用类型的实例方法append传入整数参数,就会触发类型不匹配的报错,正确写法是追加[]或者list()生成的空列表实例。 - 索引错误:循环变量
i从0开始遍历range(5),你使用All_list[i-1]取元素时,首次循环会取到索引为-1的元素,和你刚追加的列表位置不匹配,正确索引应为i。 - 逻辑漏洞:你没有在生成每个新列表前重置
number_list,第一个列表生成完成后number_list就被清空,后续循环无法取出新的随机数。
实现代码
先明确两种常见需求,你可以按需选择:
需求1:每个列表单独包含1-100的不重复随机数(列表内部无重复,允许数字在不同列表重复)
使用random.shuffle实现更高效,避免频繁调用remove带来的性能损耗:
import random All_list = [] for _ in range(5): # 每次生成新列表前重置待选数字池 num_list = list(range(1, 101)) # 打乱列表顺序 random.shuffle(num_list) All_list.append(num_list)
需求2:5个列表全局共用1-100的所有数字,每个数字仅出现一次(总元素数为100)
import random All_list = [] # 先打乱全部1-100的数字 total_nums = list(range(1, 101)) random.shuffle(total_nums) # 拆分到5个列表,每个列表20个元素 for i in range(5): All_list.append(total_nums[i*20 : (i+1)*20])
内容的提问来源于stack exchange,提问作者Peggy Lin
相关产品推荐
相关产品推荐

