1

我正在开发一个程序,该程序通过FASTQ文件读取并给出该文件中每个序列的 N 数量。我设法得到每行 N 的数量,并将它们放在一个列表中。问题是我需要一个列表中的所有数字来汇总文件中 N 的总数,但它们会打印在自己的列表中。

C:\Users\Zokids\Desktop>N_counting.py test.fastq
[4]
4
[3]
3
[5]
5 

这是我的输出,列表和列表中的总金额。我已经看到了手动组合列表的方法,但是一个可以有数百个序列,所以这是不行的。

def Count_N(line):
    '''
    This function takes a line and counts the anmount of N´s in the line
    '''
    List = []
    Count = line.count("N") # Count the amount of N´s that are in the line returned by import_fastq_file
    List.append(int(Count))

    Total = sum(List)
    print(List)
    print(Total)

这就是我的代码,另一个函数选择行。

我希望有人可以帮助我。先感谢您。

4

2 回答 2

1

List您在函数中定义的永远不会超过一项,因此它不是很有用。相反,您可能应该return从函数中计数,并让调用代码(可能在某种循环中运行)append将值添加到自己的列表中。当然,由于该函数没有太多内容,您也可以将其内容移出循环!

例如:

list_of_counts = []
for line in my_file:
    count = line.count("N")
    list_of_counts.append(count)
total = sum(list_of_counts)
于 2016-04-03T15:56:46.603 回答
0

从您的代码中可以看出,您每次调用 count_N() 时都会发送一行。您声明的列表是一个本地列表,每次调用该函数时都会重新初始化。您可以使用以下方法声明全局列表:

global List =[]

我认为您还需要在函数外部声明列表才能全局访问它。

如果您在函数之外汇总列表,那会更好。现在你正在总结函数内部的列表。为此,您需要将缩进与函数声明相匹配。

于 2016-04-03T15:50:12.180 回答