将字符串重复到一定长度的有效方法是什么?例:repeat('abc', 7) -> 'abcabca'

这是我当前的代码:

def repeat(string, length):
    cur, old = 1, string
    while len(string) < length:
        string += old[cur-1]
        cur = (cur+1)%len(old)
    return string

有没有更好的(更python化的)方法来做到这一点?也许使用列表理解?


当前回答

def rep(s, m):
    a, b = divmod(m, len(s))
    return s * a + s[:b]

其他回答

我用这个:

def extend_string(s, l):
    return (s*l)[:l]
def rep(s, m):
    a, b = divmod(m, len(s))
    return s * a + s[:b]

string * (length / len(string)) + string[0:(length % len(string))]

from itertools import cycle, islice
def srepeat(string, n):
   return ''.join(islice(cycle(string), n))

并不是说这个问题没有足够的答案,而是有一个重复函数;只需要做一个列表,然后加入输出:

from itertools import repeat

def rep(s,n):
  ''.join(list(repeat(s,n))