gpt4 book ai didi

python - 如何加入列表中的某些项目

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:42 25 4
gpt4 key购买 nike

我的列表如下所示:

['', 'CCCTTTCGCGACTAGCTAATCTGGCATTGTCAATACAGCGACGTTTCCGTTACCCGGGTGCTGACTTCATACTT
CGAAGA', 'ACCGGGCCGCGGCTACTGGACCCATATCATGAACCGCAGGTG', '', '', 'AGATAAGCGTATCACG
ACCTCGTGATTAGCTTCGTGGCTACGGAAGACCGCAACAGGCCGCTCTTCTGATAAGTGTGCGG', '', '', 'ATTG
TCTTACCTCTGGTGGCATTGCAACAATGCAAATGAGAGTCACAAGATTTTTCTCCGCCCGAGAATTTCAAAGCTGT', '
TGAAGAGAGGGTCGCTAATTCGCAATTTTTAACCAAAAGGCGTGAAGGAATGTTTGCAGCTACGTCCGAAGGGCCACATA
', 'TTTTTTTAGCACTATCCGTAAATGGAAGGTACGATCCAGTCGACTAT', '', '', 'CCATGGACGGTTGGGGG
CCACTAGCTCAATAACCAACCCACCCCGGCAATTTTAACGTATCGCGCGGATATGTTGGCCTC', 'GACAGAGACGAGT
TCCGGAACTTTCTGCCTTCACACGAGCGGTTGTCTGACGTCAACCACACAGTGTGTGTGCGTAAATT', 'GGCGGGTGT
CCAGGAGAACTTCCCTGAAAACGATCGATGACCTAATAGGTAA', '']

这些是从文件中读取的 DNA 序列样本。该列表可以有不同的长度,一个序列可以有 10 个甚至 10,000 个字母。在源文件中,它们由空行分隔,因此列表中的项目为空。如何将所有项目连接到空项目之间?

最佳答案

试试这个,这是一个快速但肮脏的解决方案,工作正常,但如果输入列表非常大,则效率不高:

lst = ['GATTACA', 'etc']
[x for x in ''.join(',' if not e else e for e in lst).split(',') if x]

这就是它的工作原理,从内到外使用生成器表达式和列表推导式:

  • ',' if not e else e for e in lst :替换全部''列表中的字符串 ','
  • ''.join(',' if not e else e for e in lst) :将所有字符串连接在一起。现在序列之间的空格将由一个或多个 , 分隔。
  • ''.join(',' if not e else e for e in lst).split(',') :在有,的点处分割字符串字符,这会生成一个列表
  • [x for x in ''.join(',' if not e else e for e in lst).split(',') if x] :最后,删除空字符串,留下序列列表

或者,可以使用显式循环以更长的方式编写相同的功能,如下所示:

answer  = [] # final answer
partial = [] # partial answer
for e in lst:
if e == '': # if current element is an empty string …
if partial: # … and there's a partial answer
answer.append(''.join(partial)) # join and append partial answer
partial = [] # reset partial answer
else: # otherwise it's a new element of partial answer
partial.append(e) # add it to partial answer
else: # this part executes after the loop exits
if partial: # if one partial answer is left
answer.append(''.join(partial)) # add it to final answer

想法是相同的:我们跟踪非空字符串并累积它们,每当找到空字符串时,我们将所有累积值添加到答案中,并注意在循环后添加最后一个子列表结束。结果最终为 answer变量,并且此解决方案仅对输入进行一次传递。

关于python - 如何加入列表中的某些项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25588079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com