gpt4 book ai didi

python - 使用递归从 python 中的单体列表生成 k-mers

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:26 25 4
gpt4 key购买 nike

我正在尝试构建一个函数,该函数从字母列表(DNA 碱基)中返回或生成 k-mers 列表。 K 将代表 k-mers 的长度(或顺序)。

我已经制作了这个功能,可以将所需的结果打印到屏幕上。关键是我无法让函数返回这些值。

def function(k,y=''):
letters=['A','C','T','G']
if k==0:
print(y)
else:
for m in letters:
kmer=m+y
function(k-1,kmer)

虽然我已经返回一个列表或产生 k-mers,但没有一个选项有效。当我更改 yield 或 return 的打印时,该函数返回 None。

这可能是一个概念错误,我只是出于生物学背景而理解递归函数。

提前致谢。

最佳答案

诀窍是在递归调用中使用 yield from(需要 Python 3.3+):

def function(k, y=''):
if k==0:
yield y
else:
for m in ['A','C','T','G']:
yield from function(k-1, m+y)

测试:

>>> [x for x in function(2)]
['AA', 'CA', 'TA', 'GA', 'AC', 'CC', 'TC', 'GC', 'AT', 'CT', 'TT', 'GT', 'AG', 'CG', 'TG', 'GG']

关于python - 使用递归从 python 中的单体列表生成 k-mers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386119/

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