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

如何用Python获取两个序列(字符串)的所有可能组合?

解决两个序列列表的所有可能组合问题

给定两个序列列表:

list1 = ['G','C','A','T','C','A']
list2 = ['G','A','*','T','AC','A']

需要生成所有可能的组合序列,每个位置从两个列表对应位置的元素中选择(若元素相同则仅有一种选择)。

实现思路

  1. 遍历两个列表的对应位置,收集每个位置的可选元素(去重,避免重复选择相同元素)
  2. 利用itertools.product生成所有位置选择的笛卡尔积,得到所有可能的元素组合
  3. 将每个组合中的元素拼接成完整字符串,整理为预期的格式

代码实现

import itertools

list1 = ['G','C','A','T','C','A']
list2 = ['G','A','*','T','AC','A']

# 生成每个位置的可选元素列表(去重)
options = []
for a, b in zip(list1, list2):
    if a == b:
        options.append([a])
    else:
        options.append([a, b])

# 生成所有可能的组合并拼接成字符串
combinations = [''.join(comb) for comb in itertools.product(*options)]

# 转换为预期的元组格式输出
result = tuple(f'({seq})' for seq in combinations)
print(', '.join(result))

输出结果

运行代码后会得到与预期一致的所有组合(顺序可能因笛卡尔积生成逻辑略有不同,若需完全匹配预期顺序,可调整options内元素的排列顺序):

(GCATCA), (GCATACA), (GC*TCA), (GC*TACA), (GAATCA), (GAATACA), (GA*TCA), (GA*TACA)

内容的提问来源于stack exchange,提问作者Théo Durand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:48:09