rainbow_enchanted 2018-10-31 16:03 采纳率: 0%
浏览 1829

Python如何优化循环问题?

我要生成长度为6~17的蛋白质,并且筛选出质量为1024的。当蛋白质序列长度到12时,质量的运算很慢很拖延时间,而我要在五分钟内得到结果,请问应该如何优化?

```import itertools
dic = {
'G':57,'A':71,'S':87,'P':97,'V':99,'T':101,'C':103,'I':113,'L':113,'N':114,'D':115,
'K':128,'Q':128,'E':129,'M':131,'H':137,'F':147,'R':156,'Y':163,'W':186} #质量字典的构建
mass = 0
n=0
m = 1024
aa = dic.keys()
string = ''
list_s = []
all_list = []
def Aii(i):
m = 1
for j in range(2,i+1):
m *= j
return m
for i in range(6,18): #长度为1024的蛋白质最少有6个氨基酸(5*186+94),最多有17个氨基酸(16*57+71)
for x in itertools.combinations_with_replacement(aa,i):
for p in x:
mass += dic[p]
if mass > m:
break
if mass == m:
list_s = [''.join(x)]
print list_s
all_list.append(list_s)
mass = 0

  • 写回答

2条回答

  • threenewbee 2018-10-31 16:11
    关注

    你用itertools.combinations_with_replacement这里有大量无效的运算。
    因为如果一个组合的开头已经超过1024了,那么实际上没有必要再算下去,它和任何别的再组合都不可能符合条件。

    思路类似这个:https://bbs.csdn.net/topics/390360329

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题