百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python字符串拼接的方式和性能对比

off999 2025-06-13 16:07 32 浏览 0 评论


在编程过程中,常会用到字符串拼接。python里字符串拼接主要有四种方式,分别是,使用加号,join方法,百分号或format字符串格式化,f-string。


其中,加号运算符无疑是最常用和最简单的字符串拼接方式,在多个字符串之间直接用加号就能连接起来。还有一些特殊点的使用方法,比如结合条件判断,可动态拼接字符串。


假设有个数字 a ,用 "is so " + ("good" if a > 0 else "bad") 这样就可以根据 a 不同的值来动态拼接出不同的字符串。


a = 5

result = "is so " + ("good" if a > 0 else "bad")

print(result)


用加号运算符进行拼接时,要注意两头都必须是个字符串,常见的错误是把字符串和数字拼接,这样运行一下就会报错,正确做法是要先把数字转成字符串再拼接。


num = 10

# 错误拼接方式,会报错

# error_result = "数字是:" + num

# 正确拼接方式

correct_result = "数字是:" + str(num)

print(correct_result)


百分号和format比较少用,这里就不介绍了。f-string我们前面有做过一个专门介绍的视频,有兴趣的朋友可以看下我们前面的视频。


这里我们重点介绍一下join方法。


join方法用于将可迭代对象中的元素连接成一个字符串。基本语法是:连接字符串.join(可迭代对象)


比如我们有个字符串列表 s = ["1", "2", "3", "4"] ,要拼接成字符串,直接用引号,点,join(s)就行。 如果要用其他字符串来连接,就在引号里写上其他字符串,比如可以加个下划线,把列表每个字符串元素用下划线连接起来。

join的参数只要是个以字符串为元素的可迭代对象就行,比如列表,元组,集合等都可以。当然也可以是一个字符串,因为字符串本身就是个可迭代对象,每个字符就是这个可迭代对象的元素。比如我们把参数换成一个字符串,这样就变成了用下划线把每个字符连接起来了。

使用join时要注意,可迭代对象里的每个元素都必须是字符串。否则会抛出 TypeError 异常。我们把 s 列表的一个参数换成数字看下,这样就会报错。示例代码如下:


s = ["1", "2", 3, "4"] # 把第三个元素换成数字

# 执行会报错

# error_result = "".join(s)

join也可以拼接集合的元素。但是由于集合是无序的,所以每次拼接得到的字符串可能会不同。

和加号运算符一样,我们还可以结合条件表达式进行动态拼接。比如 "_" if a > 0 else "/" ,然后 .join(s) ,这样, a 的值不同,就可以用不同的字符串进行拼接。

a = 10

s = ["1", "2", "3", "4"]

connect_str = "_" if a > 0 else "/"

dynamic_result = connect_str.join(s)

print(dynamic_result)

join结合切片等还可以实现单个数字的排序。


比如 s 是个数字。可以用 int("".join(sorted(str(s)))) 这个式子,把这个 s 的每一位数字按顺序排序。


这里 str(s) 是先把数字转成字符串,然后用 sorted 把字符串的每个字符排序。但这时返回的是个列表,所以要用 join 把列表拼接成字符串,再用 int 转成数字。

s = 132

sorted_num = int("".join(sorted(str(s))))

print(sorted_num)


在连接多个字符串时,用 join 来拼接,会比用加号更加高效。因为每次执行加号拼接操作时,都会创建一个新的字符串对象,然后再进行下一个加号拼接,这样会产生多次内存分配和复制操作,性能开销较大。而 join() 方法会预先计算好连接后字符串所需的内存空间,然后一次性分配内存并将各个字符串复制到新的字符串中,避免了多次创建新字符串带来的性能开销。


所以加号拼接更适合简单的、少量字符串的连接操作,而 join() 方法则更适用于各种可迭代对象中的字符串连接,尤其是在处理大量字符串连接,或者需要对可迭代对象中的元素进行统一连接操作的场景中,优势明显。

我们可以来做个简单的性能对比。

import timeit

s = ["abc"] * 1000

# 定义一个函数a,循环用加号拼接

def a():

result = ""

for i in s:

result += i

return result

# 再定义一个函数b,用join拼接

def b():

return "".join(s)

# 分别执行一万次,然后输出运行用时

print(timeit.timeit(a, number=10000))

print(timeit.timeit(b, number=10000))

可以看到,用 join 的运行时间要短很多。


好了,今天的视频就到这里。熟练掌握这些字符串拼接方式,能帮助我们编写出更高效、易读的Python代码,希望这个视频对你有帮助。

相关推荐

一键重装系统哪个干净(一键重装系统那个最干净)

1.黑鲨装机大师。运行很稳定经过多人多次测试非常的稳定不会出错,也经过了多用户验证使用很不错。界面清晰操作简便,对于新手来说可能都不会安装但是这款软件简单易懂极好上手。2.一键还原精灵装机版。安装简单...

影视大全看电视剧是免费的吗
影视大全看电视剧是免费的吗

您好,可以的哦,打开2345影视大全就可以直接观看影片了,如果有视频不能观看,可以反馈给我们,我们尽快帮您定位问题哦!下载2345是可以让你免费看电影的,里面也有要会员的电影,我下载过,有很多都是不要会员的,除非是那种特别好的电影要会员。2...

2026-02-01 15:51 off999

客户端网游(客户端网游有哪些不氪金)

答案很简单,拿红警星际来说吧。没有人建主机就不可能进行联网。因为我们不知道要跟谁去联机。同里可证像暗黑破坏神,CS之类的域局网联机游戏。大型网游,说白了也就是个联机游戏。只不过理论上是在世界范围内联机...

中国北斗卫星导航系统(中国北斗卫星导航系统收费吗)

中国的北斗卫星是1994年开始研究的。1994年,我国启动北斗一号系统工程建设。2000年10月31日,第一颗“北斗一号”实验导航卫星升空。北斗系统至今发展共有三代,其中第一代也被称为“北斗卫星导航试...

日文图片文字识别在线(日文图片文字翻译)

将图片转换成文字,采用“ocr文字识别软件”可以实现,参考方法如下:1、打开(迅捷)文字识别软件,关闭上面的提示窗口;2、通过左上角的添加文件按钮,将需要转换的图片添加进去;3、点击开始识别按钮,开始...

祖玛传奇手机版下载(祖玛传奇手机版下载赚红包)

1.可能是因为下载链接失效或者被删除了。2.经典祖玛传奇是一款非常受欢迎的游戏,可能存在版权问题或者侵权问题,导致下载链接被删除或者失效。3.如果想要玩经典祖玛传奇,可以尝试在正规的游戏平台或者...

免费音乐剪辑软件(免费音乐编辑软件)

AdobeAudition(Windows系统和Mac系统都可以)和CoolEditPro(Windows系统)!这两款软件都是免费的,音频剪辑方面功能很全。例如:分音轨、多音轨混录、降噪、立体...

sdwan跨境专线(sdwan跨境专线个人能申请么)

SD-WAN跨境专线在合规合法方面存在一些具体的限制。在不同国家和地区的法律法规布局上存在差异,因此,跨境专线一定要遵守所在国家和地区的相关规定,例如中国的《关于规范互联网接入服务市场秩序的若干规定》...

北京科兴疫苗(北京科兴疫苗对人体的影响)

合格。国家有各种疫苗的审核标准,达到标准后才可以接种。国家不可能让不合格的疫苗,进入接种环节。这点大家可以放心!近期可能都不会有科兴的疫苗,是因为国家购入数量较少的原因。因为科兴是由北京科兴生物制品有...

阿里旺旺官网入口(阿里旺旺app官网)

阿里巴巴国际站旺旺有手机版。国际版阿里旺旺的下载地址是:http://trademanager.alibaba.com/有IOS和android版本阿里巴巴国际站是阿里巴巴集团最早创立的业务,是目前...

google地球手机版下载(google地球7.12手机版)

手机版本的还是电脑版本的呀,电脑版本的直接在谷歌的网站下载就是了,手机版本的就是在谷歌play商店下载就是了。需要告诉你的是,国内无法使用谷歌地球。可以在应用宝中下载,然后将下载好的谷歌地球导入进Ou...

windows11云电脑(在线windows云电脑)
windows11云电脑(在线windows云电脑)

关闭win11的云端服务的方法如下1.首先我们进入手机设置,然后点击我们的用户名称可以进入账号设置。2.确认信息后,点击“退出账号”即可关闭华为云空间了,如果我们只想要关闭备份功能的话,可以进入“云空间”3.接着点击其中的云备份选项进入,最...

2026-02-01 13:15 off999

诺基亚所有型号及图片(诺基亚所有型号及图片及价格)

诺基亚:N71、N73、N75、N76、N77、N78、N79、N80、N81、N81(8GB)、N82、N85、N91、N91(8GB)、N92、N93、N93i、N95、N95(8GB)、N96、...

星空视频壁纸(星空壁纸引擎)

星空视频壁纸设置方法:打开“开始”→“控制面板”→“更改桌面背景”→有个关于图片属性的,选择“填充”即可,还可以从“计算机”-----“组织”----“属性”----“控制面板”,其余重复一样的。您...

图片文字识别软件(图片文字识别软件哪个好)

华为手机自带文件扫描,打开华为手机的相机,选择左上角的那个图标,点进去之后下面会看到一个文字的图标,选择那个就可以对准文件拍照自动识别了,自己手写的也可以识别,就是精准度会根据你写的字的工整程度有影响...

取消回复欢迎 发表评论: