如何在Python双层for循环中跳过相同元素对与逆序重复输出
实现方案
在现有双层循环结构不变的前提下,仅需在打印前增加一行判断即可同时满足两个过滤需求:
- 跳过AA、BB这类两个字符相同的结果
- 剔除BA、CB这类和已有正序组合逆序重复的结果
修改后代码
one = { "A" : "A", "B" : "B", "C" : "C", "D" : "D", "E" : "E", "F" : "F", "G" : "G", "H" : "H" } two = { "A" : "A", "B" : "B", "C" : "C", "D" : "D", "E" : "E", "F" : "F", "G" : "G", "H" : "H" } for botname,bot in one.items(): for topname, top in two.items(): # 仅保留正序不重复的组合 if bot < top: print(str(bot) + str(top))
实现逻辑说明
Python字符串默认支持按ASCII编码顺序直接比较大小,A到H的ASCII码是依次递增的,因此:
- 两个字符相同时
bot < top判断结果为False,自动跳过AA、BB等同字符组合 - 第一个字符排序在第二个之后时(比如B和A),
bot < top判断结果为False,自动跳过BA、CB等逆序重复组合 - 仅当第一个字符排序在第二个之前时才输出,完全匹配需求的输出结果
内容的提问来源于stack exchange,提问作者project.py
相关产品推荐
相关产品推荐

