将数组乘以数组的最佳方法

时间:2014-07-07 14:43:26

标签: python string list

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

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

我想要像

这样的东西
seq*rep

输出

ATCGGGA

3 个答案:

答案 0 :(得分:6)

您可以使用ziplist comprehensionstr.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)

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

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

答案 2 :(得分:2)

这应该可以解决问题:

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

输出:

"ATCGGGA"