【问题标题】:How to make it so that loop starts at index 150 and prints 20 values from the list?如何使循环从索引 150 开始并从列表中打印 20 个值?
【发布时间】:2020-05-22 01:19:30
【问题描述】:
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 的长度。

【问题讨论】:

  • 该代码与输出不匹配,因为laenge 未定义并引发NameError。名字不好。 list1 不在任何地方使用。第一个删除空字符串的while 循环效率低下。但无论如何,该列表中不能有任何空字符串。如果可以,第二个while 循环将是一个无限循环。
  • stakeoverflow 出错→ lenght/laenge

标签: python python-3.x list python-3.6


【解决方案1】:

您好,您可以尝试使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 2020-12-02
    • 2020-01-15
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2023-01-09
    相关资源
    最近更新 更多