python - 列表之间的组合忽略列表中的元素和列表并忽略对的排序

标签 python combinations

我有两个列表:

list1=['a', 'z', 'd', 'e','b']
list2=['d','e', 'b' ]

我需要这两个列表的元素的组合(而不是排列)。我已经尝试过 itertools.combinationsitertools.product,但我没有得到我想要的。例如,('d','d') 是错误的。 ('a','z') 也是错误的,因为 'a''z' 属于同一个列表(list1) 而它们都没有出现在 list2 中。最后,我不想要 ('d','e')('e','d') - 只有其中一对,因为 order没关系。理想的输出是:

('a','d'), ('a','e'), ('a','b'),
('z','d'), ('z','e'), ('z','b'),
('d','e'), ('d','b'), ('e','b')

编辑:一般来说,list2 并不总是 list1 的子集,但我也想处理这种情况。这两个列表也可能有重叠,而不是完整的子集。

最佳答案

可能不是最有效的,但您可以尝试以下操作:

list1=['a', 'z', 'd', 'e','b']
list2=['d','e', 'b' ]

result = []
for i in list1:
    for j in list2:
        if i != j and (j,i) not in result:
            result.append((i,j))
print(result)

结果:

[('a', 'd'), ('a', 'e'), ('a', 'b'), 
 ('z', 'd'), ('z', 'e'), ('z', 'b'), 
 ('d', 'e'), ('d', 'b'), ('e', 'b')]

关于python - 列表之间的组合忽略列表中的元素和列表并忽略对的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571115/

相关文章:

php - 使用一组字符串生成所有可能的组合

python - 为什么 `zip` 似乎消耗了 `groupby` 可迭代对象?

python - OpenCV 的 label2rgb 实现

python _+ django,是编译后的代码吗?

python - 打印所有组合,python

python - 将嵌套列表组合成子列表的唯一组合

c++ - N 选择 k 为大 n 和 k

php - 获取 X 组中 N 项的所有可能组合

python - 从与 Selenium 中的模式匹配的所有元素中获取文本

python - 指定主机时,FastAPI/uvicorn 不工作