2024-10-06 12:37:10 发布
网友
我希望生成所有可能的字符组合,其中字符列表中的每个位置可能有或可能没有多个选择。你知道吗
例如,如果我有列表[['A','G'],['A','C','G'],'T'],我想从中生成['AAT','ACT','AGT','GAT','GCT','GGT']。最好的办法是什么?我以前使用过itertools,但我不知道这些函数如何处理这种请求。你知道吗
[['A','G'],['A','C','G'],'T']
['AAT','ACT','AGT','GAT','GCT','GGT']
首先,您应该使用['T']而不是'T'使您的列表同质化(列表列表)
['T']
'T'
>>> import itertools >>> L = [['A','G'],['A','C','G'],['T']] >>> [''.join(x) for x in itertools.product(*L)] ['AAT', 'ACT', 'AGT', 'GAT', 'GCT', 'GGT']
迭代字符串'T'也能工作,但在我的经验中,这可能会导致其他错误
使用itertools.product():
itertools.product()
from itertools import product lsts = [['A', 'G'], ['A', 'C', 'G'], 'T'] output = [''.join(combo) for combo in product(*lsts)]
*lsts语法将lsts中的每个元素作为一个单独的参数应用于products()函数;就像调用product(['A', 'G'], ['A', 'C', 'G'], 'T')一样。你知道吗
*lsts
lsts
products()
product(['A', 'G'], ['A', 'C', 'G'], 'T')
演示:
>>> from itertools import product >>> lsts = [['A','G'],['A','C','G'],'T'] >>> [''.join(combo) for combo in product(*lsts)] ['AAT', 'ACT', 'AGT', 'GAT', 'GCT', 'GGT']
对于相同的输出,可以将嵌套列表缩减为字符串:
lsts = ['AG', 'ACG','T']
或者,为了保持一致性,将最后一个元素列为一个列表:
lsts = [['A', 'G'], ['A', 'C', 'G'], ['T']]
但它也适用于混合序列。你知道吗
首先,您应该使用
['T']
而不是'T'
使您的列表同质化(列表列表)迭代字符串
'T'
也能工作,但在我的经验中,这可能会导致其他错误使用
itertools.product()
:*lsts
语法将lsts
中的每个元素作为一个单独的参数应用于products()
函数;就像调用product(['A', 'G'], ['A', 'C', 'G'], 'T')
一样。你知道吗演示:
对于相同的输出,可以将嵌套列表缩减为字符串:
或者,为了保持一致性,将最后一个元素列为一个列表:
但它也适用于混合序列。你知道吗
相关问题 更多 >
编程相关推荐