gpt4 book ai didi

python - 有没有一个Python函数可以丢弃或忽略负值?

转载 作者:行者123 更新时间:2023-11-30 23:27:18 26 4
gpt4 key购买 nike

该程序应该找到字符串的开始位置(在“ATG”处)并切片直到终点(在“TAG”、“TAA”或“TGA”处)。每当我尝试使用我创建的函数和提供的测试字符串计算lastIndex时,我都会不断收到-1作为索引。是否有一个 Python 函数可以丢弃或忽略负值?

genome = 'TTATGTTTTAAGGATGGGGCGTTAGTT'
newGenome = ''

def firstIndex(genome):
return genome.find("ATG")

def lastIndex(genome):
return min(genome.find("TAG"), genome.find("TAA"), genome.find("TGA"))


for i in range(genome.count("ATG")):
newgenome = genome[firstIndex(genome):lastIndex(genome)]

最佳答案

如果没有找到任何内容,

find 将返回 -1。因此,如果未找到任何密码子,您的 lastIndex 函数将始终返回 -1。

您并不是真的想“忽略-1”,而是想找到 TAG|TAA|TGA 的第一个实例。 (幸运的是,您提供了代码,因此我们避开了 XY problem 中最糟糕的部分)

您的代码还存在效率低下的问题 - 它必须对整个字符串进行 3 次完整遍历才能找到三个密码子之一的第一次出现。我们可以通过使用正则表达式来改进这一点。

尝试使用re.finditer,这样您只需通过基因组一次:

next(m.start() for m in re.finditer('TAG|TAA|TGA',genome))
Out[9]: 8

使用 next 很好,因为如果生成器表达式没有产生任何结果,我们可以提供默认值:

def lastIndex(genome):
return next((m.start() for m in re.finditer('TAG|TAA|TGA',genome)),None)

关于python - 有没有一个Python函数可以丢弃或忽略负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com