Python字符串拼接比较“+”和str.join

Python字符串拼接比较“+”和str.join,第1张

1、如何将多个小字符串拼接成一个大的字符串?

        实际案例:

                在设计某网络程序时,我们自定义了一个基于UDP的网络协议,按照固定次序向服务器传递一系列参数:

hwDetect	"<0112>"
gxDepthBits	"<32>"
gxResolution	"<1024x768>"
gxRefresh	"<60>"
fullAlpha	"<1>"
lodDist		"<100.0>"
DistCull	"<500.0>"

在程序中我们将各个参数按次序收集到列表中:
["<0112>", "<32>", "<1024x768>", "<60>", "<1>", "<100.0>", "<500.0>"]

最终我们要把各个参数拼接成一个数据报进行发送:
"<0112><32><1024x768><60><1><100.0><500.0>"

        解决方案:

                方法1:迭代列表,连续使用'+' *** 作依次拼接每一个字符串。

                方法2:使用str.join()方法,更加快速的拼接列表中所有字符串。

2、代码演示
s1 = 'abcdef'
s2 = '123456'

# 使用+拼接字符串,本质上是运算符重载,_add__内置方法
print(s1 + s2)
print(str.__add__(s1, s2))

# 字符串大于等于比较,本质上调用的是__gt__方法
print(s1 > s2)
print(str.__gt__(s1, s2))

pl = ["<0112>", "<32>", "<1024x768>", "<60>", "<1>", "<100.0>", "<500.0>"]
# 方法1:使用+加号
'''
这种方法存在巨大的浪费,每次拼接都有一个临时的字符串用过以后就被丢弃,
这样也就意味着大量字符串拷贝和对象的释放,每次这种临时结果不用了,
它就被解释器释放掉了,如果字符串特别长这样开销就会巨大。
'''
s = ''
for p in pl:
    s += p
    # 打印s的变化过程
    print(s)

# 方法2(推荐):str.join方法
'''
str.join方法介绍:
    S.join(iterable) -> string
    Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
    以什么进行连接这个符号就是分隔符,如上面用点(.)进行连接字符串
'''
# 以空字符进行连接
print(''.join(['abc', '123', 'xyz']))
# 以空字符去join列表中的字符串,就不存在临时变量的浪费
print(''.join(pl))

# l列表包含字符串和数字,拼接l中的每项成一个字符串
l = ['abc', 123, 45, 'xyz']
# 使用列表解析也会增加开销
ls = ''.join([str(x) for x in l])
print(ls)
# 使用生成器表达式,将[]变成了(),它的开销相比于列表小的多
print(''.join((str(x) for x in l)))
# 作为参数的时候,可以不用圆括号
print(''.join(str(x) for x in l))
'''
拼接项很少的时候,可以使用+加号这样很简洁;
拼接项很多的情况下使用str.join方法避免浪费。
'''

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/799616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存