You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除一个列表中存在于另一个列表中的元组组合?

实现方案

你要做的是过滤seq2中包含k1指定二元组组合的排列,参考实现代码如下:

from itertools import permutations

seq2 = permutations(['p', 'y', 't', 'h', 'o', 'n'], 5)
k1 = [('y','h'),('p','o'),('h','n'),('t','p'),('n','o')]

# 转换为集合提升查询效率
k1_set = set(k1)
k2 = []

for perm in seq2:
    # 生成当前排列的所有相邻二元组
    adjacent_pairs = zip(perm, perm[1:])
    # 仅保留不存在k1指定组合的排列
    if not any(pair in k1_set for pair in adjacent_pairs):
        k2.append(perm)

逻辑说明

  • 上述代码默认匹配相邻位置的二元组组合,也就是如果k1里的元组是排列里连续出现的两个元素,就会被排除
  • 如果你的需求是只要排列中同时出现k1元组的两个元素,不管顺序和位置就排除,可以把判断条件替换为:
    if not any(p[0] in perm and p[1] in perm for p in k1_set):
    

内容的提问来源于stack exchange,提问作者pred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:57:04