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

如何在Python中生成字符串指定字符对的两两组合元组

问题解决

你的代码存在两个核心问题:

  1. 内层循环遍历的是单个字符(enumerate(s[i+2:])会逐个取出字符串中的字符),因此c[:2]实际是单个字符,拼接后得到3字符的字符串,而非预期的4字符。
  2. 外层循环range(0, len(s)-2, )缺失步长参数,默认步长为1,会导致取到重叠的双字符组(比如AG之后取GG),不符合你示例中不重叠的双字符分组要求。

修正后的代码

s = 'AGGCTTAGGATTCAAA'
output = [
    (s[i:i+2] + s[j:j+2], 1 / (idx + 1))
    for i in range(0, len(s)-1, 2)  # 步长2,取不重叠的双字符组
    for idx, j in enumerate(range(i+2, len(s), 2))  # 遍历后续所有不重叠的双字符组的起始索引
]

代码说明

  • 外层循环range(0, len(s)-1, 2):从索引0开始,每次步长2,获取所有不重叠的双字符组(如AG、GC、TT等)。
  • 内层循环enumerate(range(i+2, len(s), 2)):从当前双字符组的下一个位置开始,同样以步长2遍历后续所有双字符组的起始索引j,idx用于生成1、1/2、1/3...的数值。
  • 拼接时用s[i:i+2](当前双字符组)加上s[j:j+2](后续双字符组),得到预期的4字符字符串。

验证结果

运行代码后生成的元组列表与你给出的示例完全一致,比如第一组会生成:

('AGGC', 1), ('AGTT', 0.5), ('AGAG', 0.3333333333333333), ('AGGA', 0.25), ('AGTT', 0.2), ('AGCA', 0.16666666666666666), ('AGAA', 0.14285714285714285)

内容的提问来源于stack exchange,提问作者Riaz Hussain Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:41:59