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 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建