城子江 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 html5 qrcode 扫描器
  • ¥15 爬取网页信息并保存需要完整代码
  • ¥15 一分十不等功分器阻设计问题,请问这个56Ω怎么得到的
  • ¥15 (标签-matlab)
  • ¥100 求看看这个数学建模,有偿
  • ¥15 深度学习目标检测现在框架加注意力的创新可以投几区?
  • ¥15 PdfiumViewer pdf转图片
  • ¥15 利用Java连接API接口总是出问题
  • ¥15 请教一个关于镜头标定,棋盘格格子大小的问题(畸变测试)
  • ¥15 安装GroudingDINO RuntimeError: Error compiling objects for extension