一. str1+str2
string類型 ‘+’號連接
>>> str1="one" >>> str2="two" >>> str1+str2 'onetwo' >>>
注意:該方式性能較差,因為python中字符串是不可變的類型,使用 + 連接兩個字符串時會生成一個新的字符串,生成新的字符串就需要重新申請內存,當連續相加的字符串很多時(a+b+c+d+e+f+...) ,效率低下就是必然的了
例如:

#!/usr/bin/evn python # -*- coding: utf-8 -*- #Author: Johnson Chen from time import time def lz(): t = time() for i in range(10000): s = s = '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' + '蘭州' print(time() -t) def v5(): t = time() for i in range(10000): s = ''.join(['威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武']) print(time() -t) lz() is v5()
運行結果為:
0.19512629508972168
0.06001925468444824
前后兩種方式的性能有3倍的差距。
二. str1,str2
string類型 ‘,’號連接成tuple類型
>>> str1="one" >>> str2="two" >>> str1 ,str2 ('one', 'two') >>> type((str1 ,str2)) <type 'tuple'> >>>
三. “%s%s” %(str1,str2)
string類型占位符連接
>>> str1="one" >>> str2="two" >>> "%s%s"%(str1,str2) 'onetwo'
四. str1 str2
string類型空格自動連接
>>> "one" "two" 'onetwo'
這里需要注意的是,參數不能代替具體的字符串寫成
錯誤方式:
>>> str1="one" >>> str2="two" >>> str1 str2 File "<stdin>", line 1 str1 str2 ^ SyntaxError: invalid syntax
五. M*str1*N
string類型乘法連接
>>> str1="one" >>> 1*str1*4 'oneoneoneone' >>>
六. join方式連接
string類型join方式連接list/tuple類型
>>> str1="one" >>> list1=["a","b","c"] >>> tuple1=("H","I","J") >>> str1.join(list1) 'aonebonec' >>> str1.join(tuple1) 'HoneIoneJ'
這里的join有點像split的反操作,將列表或元組用指定的字符串相連接;
但是值得注意的是,連接的列表或元組中元素的類型必須全部為string類型,否則就可能報如下的錯誤:
>>> list2=["a",2,"c",4.3] >>> str1.join(list2) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: sequence item 1: expected string, int found >>>
join還有一個妙用,就是將所有list或tuple中的元素連接成string類型並輸出;
>>> list1 ['a', 'b', 'c'] >>> "".join(list1) 'abc' >>> type("".join(list1)) <type 'str'> >>>
七.列表推導方式連接
與join方式類似
>>> "".join(["Land" for i in xrange(3)]) 'LandLandLand' >>> "0".join(["Land" for i in xrange(2)]) 'Land0Land' >>>