一、splite与join
Python split() 通过指定分隔符对字符串进行切片
切片之后为list数据类型。
join之后的对象的数据类型是str。
sentence = 'I can because I think I can ' s_1 = sentence.split(sep=' ', maxsplit=2) s_2 = sentence.split() # sep默认为所有的空字符,包括空格、换行( )、制表符( )等;maxsplit默认为 -1, 即分隔所有。 s_4 = '-' s_5 = ['1', '2', '3'] s_6 = s_4.join(s_5) print('s_1', s_1) print('s_2', s_2) print(isinstance(s_2, list)) print('s_6', s_6) print(isinstance(s_6, str))
二、连接字符串应优先使用 join 而不是 +
Python 中的字符串与其他一些程序语言如 C++、Java 有一些不同,它为不可变对象,一旦创建便不能改变,它的这个特性直接影响到 Python 中字符串连接的效率。
join() 方法的效率要高于 + 操作符。当用操作符 + 连接字符串的时候,由于字符串是不可变对象,
其工作原理实际上是这样的:如果要连接如下字符串: S1+S2+S3+...+SN ,
执行一次 + 操作便会在内存中申请一块新的内存空间,并将上一次操作的结果和本次操作的右操作数复制到新申请的内存空间,
在 N 个字符串连接的过程中,会产生 N-1 个中间结果,每产生一个中间结果都需要申请和复制一次内存,总共需要申请N-1 次内存,从而严重影响了执行效率,时间复杂度近似为 O(n^2) 。
而当用 join() 方法连接字符串的时候,会首先计算需要申请的总的内存空间,然后一次性申请所需内存并将字符序列中的每一个元素复制到内存中去,所以 join 操作的时间复杂度为 O(n) 。