Python生成指定范围无重复数字的二维列表的实现方法
原生Python实现方案
你可以借助Python标准库random实现完全一致的效果,不需要依赖numpy,有两种常用实现方式:
方法1:使用random.sample直接无重复采样
random.sample可以从指定序列中无重复抽取指定数量的元素,刚好符合0-8无重复的要求,再按3个一组切分生成二维列表即可:
import random def ran(): # 从0-8的序列中无重复抽取全部9个元素 random_nums = random.sample(range(9), 9) # 每3个元素为一组,拼接成3×3二维列表 return [random_nums[i*3 : (i+1)*3] for i in range(3)] # 调用生成 var1 = ran() print(var1)
输出示例:
[[4, 5, 6], [3, 2, 0], [8, 1, 7]]
方法2:使用random.shuffle打乱有序序列
先生成0-8的有序列表,直接打乱后再切分成二维结构:
import random def ran(): num_list = list(range(9)) # 原地打乱列表顺序 random.shuffle(num_list) # 切分成3×3结构 return [num_list[i*3 : i*3 + 3] for i in range(3)] var1 = ran()
两种方法的输出效果和你之前用numpy实现的完全一致,都是0-8范围内无重复元素的3行3列列表结构。
内容的提问来源于stack exchange,提问作者Levi Ackerman
相关产品推荐
相关产品推荐

