我想用数组中的数字重复字符串中的每个字符,即
rep = [1, 0, 1, 1, 3, 0, 0, 1, 0]
seq = 'AATCGGGAA'
我想要像
这样的东西seq*rep
输出
ATCGGGA
答案 0 :(得分:6)
您可以使用zip
,list comprehension和str.join
:
>>> 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'
>>>
答案 1 :(得分:4)
最快的方法是将map
与operator.mul
一起使用:
>>> from operator import mul
>>> ''.join(map(mul, seq, rep))
'ATCGGGA'
答案 2 :(得分:2)
这应该可以解决问题:
"".join([s*r for r, s in zip(rep, seq)])
输出:
"ATCGGGA"