首页 > 解决方案 > 如何使循环从索引 150 开始并从列表中打印 20 个值?

问题描述

def corona(data,lenght,abstand,temperatur):
    file = open('/home/rezan/Downloads/MSA_SARS2_20200329.consensus.fasta','r')
    list = []
    list1 = []

    for i in file:
        ls = i.strip()
        list.append(ls)

        for l in i:
            list1.append(l.strip())
        while '' in list1:
            list1.remove('')
        while '' in list:
            list1.remove('')

    temp = temperatur
    for w in list:
        if temp == (2* w[0:laenge].count('A') + 
                    2* w[:laenge].count('T') + 
                    4* w[0:laenge].count('G') +  
                    4* w[0:laenge].count('C')):
            print((w[0:laenge]))


corona('/home/rezan/Downloads/MSA_SARS2_20200329.consensus.fasta',20,150,60)

我得到了这个输出:

CCGGGTGTGANCGAAAGGTA
TTCGGANGCTCGAACTGCAC
AGGCATTCAGTACGGTCGTA
TGATGGCTACCCTCTTGAGT
CACTTTGTCCGAACAACTGG
CACACTCAAAGGCNGTGCAC
TGTTGTGGCAGATGCTGTCA
GGGTGTTTTAACTGCTGTGG
GGGTGTGGTTGATTATGGTG
AATGGCCCCGATTTCAGCTA
TGCAACTGCAGAAGCTGAAC
TATTTCAGCAGCTCGGCAAG
TCTCGCAAAGGCTCTCAATG
AGTTCATGCTGGCACAGACT
AATGCTGGACAACAGGGCAA
TGATGCAGCCATGCAACGTA
GGCTAGATTCCCTAAGAGTG
TACACAATGGCAGACCTCGT
TTCATACAAACCACGCCAGG
TGCAATGCTCCAGGTTGTGA
GGTAAACCTAGACCACCACT
GACACTGTGAGTGCTTTGGT
CTATGTGATAGACGTGCCAC
CTTCACGACATTGGTAACCC
GACAGTCCATGTGAGTCTCA
GATGCGCAAACAGGTTCATC
AAAGGAGTTGCACCAGGTAC
AGGGGTACTGCTGTTATGTC
GACCCAGTCCCTACTTATTG
GAACTTCACAACTGCTCCTG
GCACAAGCTGATGAGTACGA
GTTTGGTGGACCCTCAGATT
CACTCAACATGGCAAGGAAG
CAATAGCAGTCCAGATGACC
GGGAGCCTTGAATACACCAA
GAAGCCTCGGCAAAAACGTA

但我希望 python 从列表中的 150 值开始,而不是在开头并保持 20 的长度。

标签: pythonpython-3.xlistpython-3.6

解决方案


您好,您可以尝试使用 itertools.islice。我不会用所有格式重写你的代码,但我会举一个例子来说明如何做到这一点。

import itertools

start_index = 150
end_index = start_index + 20

with open('data.txt') as f:
    for line in itertools.islice(f, start_index, end_index):
        print(line) # This will print out lines from start_index to end_index

推荐阅读