python - 与生物学有关的列表理解
问题描述
我正在尝试使用仅包含终止密码子的字典使用关于开放阅读框的列表理解来编写函数。该程序一次接收三个字母,如果这三个字母是该终止密码子之一,则程序停止并计算字母的数量(不计算终止密码子,之后也不计算任何内容)。
例如,nextStop2('AAAAAAAGTGGGTGCTAGGTTGGC')
应该返回 15。这是我目前所拥有的,但 python 一直告诉我语法错误。谁能给我一些关于如何改进的建议?
def nextStop2(Seq):
GeneticCodeStop = {'TAA':'X', 'TAG':'X', 'TGA':'X'}
seq2 = ''.join(i if GeneticCodeStop[Seq[i:i+3]]!='X' else end_of_loop()
for i in range(0,len(Seq),3))
return len(seq2)
下面是使用简单 for 循环的正确代码(由 diggusbiccus 提供)。我试图将其转换为列表理解,但不确定语法。
def nextStop2(Seq):
GeneticCodeStop = ['TAA', 'TAG', 'TGA']
seq2=''
for i in range(0,len(Seq),3) :
codon=Seq[i:i+3]
if codon in GeneticCodeStop:
break
seq2+=codon
return len(seq2)
解决方案
itertools.takewhile
(自下而上阅读评论):
''.join( # joining them into a single string
itertools.takewhile(
lambda x: x not in GeneticCodeStop, # until a stop codon found
(Seq[i:i+3] for i in range(0, len(Seq), 3)) # iterate codons
)
)
推荐阅读
- python - 以 sudo 运行 TensorBoard 时找不到 libcublas.so.9.0
- css - 使用 Bootstrap 4 flexbox 等分四个图表
- pcap - 如何从 C# 授予 Windows 10 中 Pcap 库的权限?
- javascript - React map 函数没有从对象数组中返回项目
- imagemagick - 如何将多个 ImageMagick 命令合并或转换为一个命令
- amazon-web-services - 使用 cloudformation 更新 S3 存储桶的 IAM 策略
- angular - 类型'可观察的
' 不可分配给类型 'Entity[]' - apache-spark - Jupyter Notebook 连接到远程配置单元
- css - 如何在 HTML 中强制分词?
- php - 通过从 mysqli 表中获取最后一条记录 id 来增加 ID