如何将itertools.product生成的元组对按数值顺序正确排列
实现方法
有两种处理方案,可根据你的需求选择:
方案1:保留原product的顺序,仅对每个元组内部元素排序
如果你的期望输出是保留原始生成顺序,仅把每个元组的两个数值从小到大排列,直接遍历处理每个元素即可:
import itertools CHs = [tuple(sorted(pair)) for pair in itertools.product(at_idx_map['H'], at_idx_map['C'])]
处理后输出和你给出的预期完全一致:[(0, 1), (0, 6), (0, 11), (1, 5), (5, 6), (5, 11), (1, 10), (6, 10), (10, 11)]
方案2:元组内部排序后,对整个列表全局排序
如果需要整个列表的元组按先比第一个元素、再比第二个元素的规则全局升序排列,额外加一层全局排序即可:
import itertools CHs = sorted(tuple(sorted(pair)) for pair in itertools.product(at_idx_map['H'], at_idx_map['C']))
处理后输出为严格升序的结果:[(0, 1), (0, 6), (0, 11), (1, 5), (1, 10), (5, 6), (5, 11), (6, 10), (10, 11)]
内容的提问来源于stack exchange,提问作者TYSH
相关产品推荐
相关产品推荐

