将字符串重复到一定长度的有效方法是什么?例: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化的)方法来做到这一点?也许使用列表理解?


当前回答

这是非常python的:

newstring = 'abc'*5
print newstring[0:6]

其他回答

当前打印(f"{'abc'*7}")生成:

abcabcabcabcabcabcabc
def repeat_to_length(string_to_expand, length):
   return (string_to_expand * ((length/len(string_to_expand))+1))[:length]

python3:

def repeat_to_length(string_to_expand, length):
    return (string_to_expand * (int(length/len(string_to_expand))+1))[:length]

耶递归!

def trunc(s,l):
    if l > 0:
        return s[:l] + trunc(s, l - len(s))
    return ''

不会永远缩放,但对于较小的字符串是可以的。它很漂亮。

我承认我刚读了《小阴谋家》我现在喜欢递归。

另一种FP方法:

def repeat_string(string_to_repeat, repetitions):
    return ''.join([ string_to_repeat for n in range(repetitions)])
def rep(s, m):
    a, b = divmod(m, len(s))
    return s * a + s[:b]