在Python中,高效地将字符串重复到特定长度的方法是什么?


在Python中,一种高效地将字符串重复到特定长度的方法是使用字符串乘法运算符(*)和字符串连接。以下是一些带有逐步说明的代码示例

使用字符串乘法运算符

示例

定义原始字符串和要重复到的所需长度。

使用整除运算符(//)计算需要重复字符串的次数,方法是将所需长度除以字符串的长度。

使用字符串乘法运算符(*)将字符串乘以计算出的重复次数。

使用取模运算符(%)将任何剩余字符添加到重复字符串的末尾,方法是从原始字符串的开头到所需长度除以原始字符串长度的余数进行切片。

string = "foobar"
desired_length = 10
repeated_string = string * (desired_length // len(string)) + string[:desired_length % len(string)]
print(repeated_string)

输出

foobarfoob

使用while循环

示例

定义原始字符串和要重复到的所需长度。

创建一个空的字符串变量来保存重复的字符串。

使用while循环将原始字符串追加到重复的字符串变量,直到其长度等于或大于所需长度。

对重复的字符串进行切片,以去除超过所需长度的任何额外字符。

string = "lorem"
desired_length = 10

repeated_string = ""

while len(repeated_string) < desired_length:
    repeated_string += string

repeated_string = repeated_string[:desired_length]

print(repeated_string)

输出

loremlorem

使用取模运算符和join函数

示例

定义原始字符串和要重复到的所需长度。

创建一个列表推导式,使用取模运算符(%)重复原始字符串的字符,当到达字符串末尾时循环回到字符串的开头。

使用join()函数将列表中的字符组合成单个字符串。

将生成的字符串赋值给repeated_string变量。

string = "ipsum"
desired_length = 10

repeated_string = "".join([string[i % len(string)] for i in range(desired_length)])

print(repeated_string)

输出

ipsumipsum

以下是一些更有效的代码示例,它们带有逐步说明,用于在Python中高效地将字符串重复到特定长度

使用itertools.cycle

示例

导入itertools模块,该模块提供一个cycle()函数,可以无限地重复迭代。

定义原始字符串和要重复到的所需长度。

使用itertools.cycle()创建一个无限重复原始字符串的迭代器。

使用itertools.islice()将迭代器的长度限制为所需长度。

使用"".join()将切片的迭代器转换为字符串。

将生成的字符串赋值给repeated_string变量。

import itertools
string = "Fooqux"
desired_length = 10
repeated_string = "".join(itertools.islice(itertools.cycle(string), desired_length))
print(repeated_string)

输出

FooquxFooq

使用字符串格式化

示例

定义原始字符串和要重复到的所需长度。

使用字符串乘法(*)重复原始字符串,重复次数为超过所需长度的次数加一。

使用字符串切片[:]将重复的字符串修剪到所需长度。

使用字符串格式化将修剪后的字符串左对齐(<)到所需长度的字段({} )内。

将生成的字符串赋值给repeated_string变量。

string = "Sayonara"
desired_length = 12
repeated_string = "{:<{}}".format((string * (desired_length // len(string) + 1))[:desired_length], desired_length)
print(repeated_string)

输出

SayonaraSayo

使用递归

示例

定义原始字符串和要重复到的所需长度。

定义一个函数repeat_string(),它接受两个参数:字符串s和所需长度n。

如果字符串s的长度大于或等于所需长度n,则返回s的从开头到n的切片。

否则,使用将s与自身连接作为新的字符串参数和n作为相同的所需长度参数递归调用repeat_string()。

将函数调用的结果赋值给repeated_string变量。

打印repeated_string变量以显示生成的字符串。

string = "Senorita"
desired_length = 15
def repeat_string(s, n):
    if len(s) >= n:
        return s[:n]
    else:
        return repeat_string(s + s, n)

repeated_string = repeat_string(string, desired_length)

print(repeated_string)

输出

SenoritaSenorit

更新于:2023年8月11日

868 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告