Python如何获取数字列表中不含相同元素对的所有组合
解决方案
基础修改方案(兼容所有Python版本,无需额外依赖)
你只需要在原有双重循环的逻辑中增加一条相等判断,跳过两个元素值相同的场景即可,修改后代码如下:
nr_list = [1, 2, 3] combinations = [] for a in nr_list: for b in nr_list: if a != b: pair = [a, b] combinations.append(pair) print(combinations)
运行后输出结果为:[[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]
你也可以用列表推导式简化写法,逻辑和上述代码完全一致:
nr_list = [1,2,3] combinations = [[a,b] for a in nr_list for b in nr_list if a != b]
无序组合场景(仅保留不重复的无顺序配对)
如果你不需要保留不同顺序的配对(即[1,2]和[2,1]视为同一个,仅保留一次),可以直接调用Python标准库itertools的combinations方法实现:
from itertools import combinations nr_list = [1, 2, 3] result = [list(pair) for pair in combinations(nr_list, 2)] print(result)
运行后输出结果为:[[1, 2], [1, 3], [2, 3]]
内容的提问来源于stack exchange,提问作者Vic
相关产品推荐
相关产品推荐

