【发布时间】:2021-12-06 06:41:04
【问题描述】:
函数 (filteredFastaToYear) 使用了另一个不起作用的布尔值函数 (filterHeaderToYear)。非常感谢您的帮助:
我有以下任务:
我给我的第一个函数 (filteredFastaToYear) 两个列表:
sequences_inp = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO']
headers_inp = ['2019-9', '2021-2', '2020-1', '2021-5', '2021-8']
作为输出,我只需要 2021 年的标题和所属序列:
sequences_out = ['DEF', 'JKL', 'MNO']
headers_out = ['2021', '2021', '2021']
我输入:
sequences_out, headers_out = filteredFastaToYear('2021', sequences_inp, headers_inp)
print(len(sequences_out), len(headers_out))
但是输入了预期的输出,我得到了空列表:
output: 0 0
expected output: 3 3
函数filteredFastaToYear:创建两个过滤列表
def filteredFastaToYear(year, listOfSequences, listOfHeaders):
""" output filtered sequence list, header list """
filtListOfSequences = []
filtListOfHeaders = []
""" fasta filtering """
for i in range(0, len(listOfHeaders)-1):
if filterHeaderToYear(year, listOfHeaders[i]) == year:
filtListOfSequences.append(listOfSequences[i])
filtListOfHeaders.append(listOfHeaders[i])
return filtListOfSequences, filtListOfHeaders
函数filterHeaderToYear:从所需年份中选择标题:
def filterHeaderToYear(year, listOfHeaders):
""" split header, find the needed year """
for header in listOfHeaders:
header_split = header.split('-')
if header_split[0] == year:
return True
return False
【问题讨论】:
-
有什么问题?
-
如果您对其中一个功能有疑问,请保留该功能,并删除其他所有功能。说出函数得到什么作为输入,输出是什么,以及预期的输出是什么。这样就不会有任何不必要的信息,只有问题核心
-
filterHeaderToYear说它需要listOfHeaders,但你传递它listOfHeaders[i]- 一个日期。这两个函数中只有一个应该遍历完整的标题列表,而不是两个。 -
ldate_split已使用但未定义。是不是打错字了?
标签: python function boolean boolean-operations