用Python绘制列表

2024-09-30 16:20:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着画出两个列表,一个是用timeit测量时间,另一个是我在循环中运行的次数。我只得到了一个空的情节,所以我觉得有点不对劲。有人能告诉我错误在哪里吗? 功能不是很重要,但我会发布整个事件来提供上下文。 代码如下:

import random
import timeit
import matplotlib.pyplot as plt

def generateSequences(n):

    RandomSequences = []
    dna = ["A","G","C","T"]
    for i in range(int(n)):

        randseq=''

        for i in range(50):
            randseq+=random.choice(dna)

        RandomSequences.append(randseq)

    return RandomSequences

def generatePrefixes(p, RandomSequences):

    First20Chars = [x[:20] for x in RandomSequences]
    RandomChoices = []
    for i in range(p):
        randomPrefix = random.choice(First20Chars)
        RandomChoices.append(randomPrefix)

    return First20Chars, RandomChoices

def searchReadsInList(RandomSequences, RandomChoices):

    start_time = timeit.default_timer()
    Matches_RS_RC = []
    for i in RandomChoices:
        for j in RandomSequences:
            if i in j:
                Matches_RS_RC.append(j)
    elapsed_sRL = timeit.default_timer() - start_time
    return Matches_RS_RC, elapsed_sRL



if __name__ == "__main__":
    count = 10
    while count < 1000:
        RandomSequences = generateSequences(count)
        First20Chars, RandomChoices = generatePrefixes(5, RandomSequences)
        Matches_RS_RC, elapsed_sRL = searchReadsInList(RandomSequences, RandomChoices)
        ListCounts = []
        ListCounts.append(count)
        ListTime = []
        ListTime.append(elapsed_sRL)
        count = count + 10

    plt.plot(ListTime, count)
    plt.xlabel('Time')
    plt.ylabel('# of Reads')
    plt.savefig("TimePlot.pdf")
    plt.show()

Tags: inimportforcountpltrcmatchesrs
1条回答
网友
1楼 · 发布于 2024-09-30 16:20:06

我改进了main函数,您在每次迭代中都清除了列表:

if __name__ == "__main__":
    count = 10
    ListCounts = []
    ListTime = []

    while count < 1000:
        RandomSequences = generateSequences(count)
        First20Chars, RandomChoices = generatePrefixes(5, RandomSequences)
        Matches_RS_RC, elapsed_sRL = searchReadsInList(RandomSequences, RandomChoices)
        ListCounts.append(count)
        ListTime.append(elapsed_sRL)
        count = count + 10

    print ListCounts
    print ListTime

    plt.plot(ListTime, ListCounts)
    plt.xlabel('Time')
    plt.ylabel('# of Reads')
    plt.savefig("TimePlot.pdf")
    plt.show()

enter image description here

相关问题 更多 >