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

修改Python函数 实现DNA序列中多个碱基的位置查找

修改Python函数实现多碱基位置查找

问题背景

现有DNA序列碱基查找函数仅支持匹配单个碱基,示例DNA序列定义如下:

dna = ['A', 'G', 'C', 'G', 'T', 'A', 'G', 'T', 'C', 'G', 'A', 'T', 'C', 'A', 'A', 'T', 'T', 'A', 'T', 'A', 'C', 'G', 'A', 'T', 'C', 'G', 'G', 'G', 'T', 'A', 'T']

原有函数代码:

def position(list, value):
     pos = []
     for n in range(len(list)):
             if list[n] == value:
                     pos.append(n)
     return pos

需要调整函数逻辑,支持同时传入多个碱基(如'A'、'T'),返回所有匹配碱基的索引位置,同时兼容原有单碱基查询的调用方式,避免影响已有代码。

修改方案

核心调整是把单值相等判断改为集合成员判断,同时做输入兼容,修改后代码如下:

def position(dna_list, targets):
    pos = []
    # 兼容单碱基、多碱基两种输入格式,统一转为集合做匹配
    if isinstance(targets, str):
        target_bases = {targets}
    else:
        target_bases = set(targets)
    
    # 用enumerate直接获取索引和对应碱基,写法更简洁
    for idx, base in enumerate(dna_list):
        if base in target_bases:
            pos.append(idx)
    return pos

使用方式

  • 单碱基查询(和原有函数调用逻辑完全一致):
    # 查找所有A的位置
    print(position(dna, 'A'))
    
  • 多碱基查询:
    # 查找所有A和T的位置
    print(position(dna, ['A', 'T']))
    

优化说明

  • 用集合存储待匹配碱基,成员判断效率更高,长序列下性能优势明显
  • 兼容原有单碱基查询的调用方式,不需要修改之前已经写好的调用代码
  • 用enumerate替代原有的下标遍历写法,代码可读性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:48:23