C++双层for循环转Python代码的正确性校验及优化方案咨询
代码问题校验
你编写的Python代码存在以下几个明显错误:
- 索引使用错误:原C++代码逻辑是打印下标为
i和j的元素,你的代码里固定写死了array[1]、arr[2],还出现了变量名不统一(前半段用array后半段用arr)的问题,运行要么报错要么输出完全不符合预期 - 未封装为函数:原C++逻辑是接收数组参数的函数,你写的零散脚本如果没有提前定义
array变量,直接运行会报NameError - 写法不符合Python常用规范:用while循环模拟C风格for循环的写法冗余,容易出现索引维护错误
对齐原C++逻辑的修正代码
如果你要完全对应C++的实现逻辑,修正后的代码如下:
def print_unordered_pairs(array): i = 0 while i < len(array): j = i + 1 while j < len(array): # 按原逻辑输出用逗号分隔的两个元素 print(f"{array[i]},{array[j]}") j += 1 i += 1
更优化的Python实现
Python标准库itertools里的combinations方法原生支持生成可迭代对象中长度为k的无序不重复元素组合,正好匹配你要实现的功能,代码更简洁、性能更高,也避免了手动维护索引的问题:
from itertools import combinations def print_unordered_pairs(array): for a, b in combinations(array, 2): print(f"{a},{b}")
内容的提问来源于stack exchange,提问作者jkhslegg
相关产品推荐
相关产品推荐

