<p>您正在代码中拆分输入年份本身</p>
<pre><code> for header in listOfHeaders:
header_split = header.split('-')
</code></pre>
<p>这将把<code>2021-19</code>拆分为<code>[2,0,2,1,-,1,9]</code>
另外,您在<code>if filterHeaderToYear(year, listOfHeaders[i]) == year</code>处放置了一个检查,该检查将永远不会作为方法返回<code>True</code>或<code>False</code>执行,并且您正在与<code>year</code>进行比较</p>
<p>此外,您也没有通过执行以下操作来迭代完整列表</p>
<pre><code>for i in range(0, len(listOfHeaders) - 1)
</code></pre>
<p>它将在最后一个位置之前停止一个位置</p>
<p><strong>尝试此代码</strong></p>
<pre><code>def filteredFastaToYear(year, listOfSequences, listOfHeaders):
""" output filtered sequence list, header list """
filtListOfSequences = []
filtListOfHeaders = []
""" fasta filtering """
for i in range(0, len(listOfHeaders)):
if filterHeaderToYear(year, listOfHeaders[i]):
filtListOfSequences.append(listOfSequences[i])
filtListOfHeaders.append(listOfHeaders[i])
return filtListOfSequences, filtListOfHeaders
def filterHeaderToYear(year, listOfHeaders):
""" split header, find the needed year """
header_split = listOfHeaders.split('-')
if header_split[0] == year:
return True
return False
sequences_inp = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO']
headers_inp = ['2019-9', '2021-2', '2020-1', '2021-5', '2021-8']
sequences_out, headers_out = filteredFastaToYear('2021', sequences_inp, headers_inp)
print(len(sequences_out), len(headers_out)) # 3,3
</code></pre>