城子江 2021-05-29 00:51 采纳率: 100%
浏览 36
已采纳

Python获取基因库序列并排序

下面代码哪里错了,为什么提示"list index out of range"

import reimport randomseq_count = 0list = []list_1 = []list_2 = []seq = []seq_2 = []q = 0v = []count_1 = []with open('sequence.fasta', 'r') as f: for line in f: if line[0] == '>': seq_count += 1 line = 'contig' f = re.sub(r'[N]+|(\n)', '', line) list.append(f) seq = ''.join(list) seq = re.split('contig', seq) seq = seq[1:]print(seq_count)print(seq)while q < 5000: a = random.randint(0, 23) length = len(seq[a]) n = random.randint(0, length-200) seq_5000 = seq[a][n:n + 200] seq_2.append(seq_5000) q += 1# print(seq_2)for line_1 in seq_2: a = line_1.count('G') b = line_1.count('g') c = line_1.count('C') d = line_1.count('c') GC = (a + b + c + d) / 200 list_1.append(GC) list_1.sort(reverse=True)# print(list_1)# print(list_1[0:10])seq_3 = ''.join(seq_2) # //将取出的每一条条200bp的序列转化为字符串list_2.append(seq_3)seq_all = ''.join(list_2) # //将5000条200bp的列表转化为一整条长字符串seq_all_1 = seq_all.upper()# print(seq_all)seq_fen = [seq_all_1[i:i + 4] for i in range(0, len(seq_all_1), 4)]# print(seq_fen)

  • 写回答

2条回答 默认 最新

  • 关注

    list index out of range 错误出现的原因主要有两个,一个可能是下标超出范围,一个可能是list是空的,没有一个元素

    比如

        a = random.randint(0, 23)

        length = len(seq[a])

    a最大是23,你seq列表中有24个元素吗

     

    请使用<代码段>重发一下代码,你这样代码没有格式别人没法分析。

    尤其是python代码,要求格式不能乱。

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答