排列计算迭代问题:Python列表排列算法运行结果异常求助
代码问题排查
前置错误修正
你代码存在变量名拼写不一致的问题:前序生成的列表命名为list,后续循环使用的变量名为liste,需先统一命名为不与内置关键字冲突的名称,比如num_list,避免触发未定义变量报错。另外不建议直接用list作为变量名,会覆盖Python内置的list类型,容易引发后续异常。
两个异常现象的根因
- 30开头的配对缺失:外层循环i第一次取值为0(对应列表第一个元素30)时,你在初始化j=0后直接判断
i==j触发continue,直接跳过了i=0的整个分支,所有30作为第一个元素的配对都没有进入生成逻辑。 - 出现同元素配对:
i==j的判断仅在进入i分支、j还没开始循环的时候执行一次,j开始递增后没有任何校验逻辑,当j递增到等于i的取值时,会直接把相同索引的两个元素加入结果,就出现了[40,40]这类同值配对。
修正后代码
如果你需要生成所有不同元素的有序两两排列,可参考以下修正逻辑:
a = 30 num_list = [] while a < 101: num_list.append(a) a += 10 perm = [] for i in range(len(num_list)): j = 0 while j < len(num_list): if i != j: perm.append([num_list[i], num_list[j]]) j += 1
内容的提问来源于stack exchange,提问作者fukii
相关产品推荐
相关产品推荐

