字符串与数组相乘的最佳方法

2024-04-25 18:14:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用数组中的一个数字来重复字符串中的每个字符,即如果

rep = [1, 0, 1, 1, 3, 0, 0, 1, 0]
seq = 'AATCGGGAA'

我想要像这样的东西

seq*rep

输出

ATCGGGA

Tags: 字符串数字数组字符seqrepatcgggaaatcgggaa
3条回答

最快的方法是将mapoperator.mul一起使用:

>>> from operator import mul
>>> ''.join(map(mul, seq, rep))
'ATCGGGA'

可以使用^{}、a list comprehension^{}

>>> rep = [1, 0, 1, 1, 3, 0, 0, 1, 0]
>>> seq = 'AATCGGGAA'
>>>
>>> list(zip(seq, rep)) # zip pairs up the items in the two lists
[('A', 1), ('A', 0), ('T', 1), ('C', 1), ('G', 3), ('G', 0), ('G', 0), ('A', 1), ('A', 0)]
>>>
>>> ''.join([x*y for x,y in zip(seq, rep)])
'ATCGGGA'
>>>

这应该可以做到:

"".join([s*r for r, s in zip(rep, seq)])

输出:

"ATCGGGA"

相关问题 更多 >