python中字符串拼接有三种方式
方式一: + 不推荐使用
str1 = "a"
str2 = "b"
str3 = "c"
str4 = str1 + str2 + str3
# 这种方式非常效率低下,这是因为python中字符串是不可变的类型,
# 使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,
# 当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了
方式二: 打印 % 或者 format
str1 = "a"
str2 = "b"
str3 = "%s%s" % (str1,str2)
str4 = "{}{}".format(str1,str2)
# 这种方式不需要申请很多次内存,而是一次性完成,所以这种方法推荐首选
# 下面是for循环拼接一个字符串时候的使用
content = u""
for i in range(20):
content= u"{}{}".format(content,str(i))
方式三:专为列表拼接 join
list1 = ["1","2","3"]
str1 = "".join(list1)
# 这种效率在列表拼接的时候是效率最高的
# 不过需要注意的是有一个坑,使用join的时候,列表里面的每一项都必须是str类型
# 否则会出错
# 比如:
list2 = ["1",2]
str2 = "".join(list2)
>>TypeError: sequence item 1: expected str instance, int found
方式四: template方式
# 该效率是字符串打印的进阶版,因为字符串打印 % {} 方式有可能会因为数量不够而报错
from string import Template
temp1 = Template("${s1} 11 ${s2} 22 ${s3}") # ${} 设置变量占位符
str2 = temp1.safe_substitute(s1="hello",s2="world")
print(str2) # hello 11 world 22 ${s3}
str3 = temp1.safe_substitute(s1="hello",s2="world",s3="i'am comming")
print(str3) # hello 11 world 22 i'am comming
# 这种方式打印不会出现问题
方式五: F-strings效率最高
# 注意这种方式,只有部分python版本支持
str1 = "hello"
str2 = " world!"
num1 = 5
def func1(x):
return x*x
print(f"{str1}{str2}") # hello world! 加载变量
print(f"{func1(num1)}") # 25 调用函数
# f字符串 里面的{} 可以认为就是代码块,能够被python解析器运行
网友评论