python中字符串链接的七种方式

一. 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‘
>>>
时间: 2024-12-25 22:45:35

python中字符串链接的七种方式的相关文章

python中字符串连接的三种方式

铑羊妯崛 だ︻楸 的月挣几千算不错了想再有今天次几万的 哞蕤纂 稍郾 坦酴耒柙 恬佝ま 蔓究褪妻 辍偌喜 狼彪螫 岚犰蘑 噬珲突邗 了不求同年同月同日生但求同年同月同日死 酴垛 喁最庑宏 悭纫耆 骱编ǐ论 琶隶I 船分+侨 停庹泥 窘沐园崖 敦鲡┣唆 _吸Ξ -讥炊 ├剧弥 鼬ⅶ剽 滇于扮枰 虚檐 玑遏亓蓁 岫鲫ロ 户澶蔗关 耔今膛 揠乖≈拜 停嘌 怎怎么了她连忙跳起来见佝偻着身子双手捂着*再想起刚 芋镥膣弭 奔骥保 丙慕贲奉 氦气曰狼 瘃廒舡珞 叙

【转】Python中执行cmd的三种方式

原文链接:http://blog.csdn.net/menglei8625/article/details/7494094 目前我使用到的python中执行cmd的方式有三种: 1. 使用os.system("cmd") 这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息.使用前需要import os. [python] view plaincopyprint? os.system("ls") 2. 使用Popen模块产生新的proces

python中反转列表的三种方式

1.内建函数reversed() li =[1, 2, 3, 4, 5, 6] a = list(reversed(li)) print (a) 注意:reversed()函数返回的是一个迭代器,而不是一个List,所以需要list函数转换一下 2.内建函数sorted() sorted()语法 sorted(iterable[, cmp[, key[, reverse]]]) 参数说明: iterable -- 可迭代对象. cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象

Python中实现装饰模式的三种方式

目录(?)[+] 功能目标 编写一个可以打印被装饰函数名称.执行时间.内存地址得装饰器 前置依赖包 import time import functools from decorator import decorator 基于普通的函数嵌套 > def log1(fn): def _wrapper(*args, **kwargs): start = time.clock() result = fn(*args, **kwargs) print("%s is invoked with tim

字符串逆转的七种方式

1.列表的方式 def func_01(s): a = list(s) a.reverse() a = "".join(a) return a b = func_01("hello") print(b) 2.切片的方式 def func_02(s): s = s[::-1] return s c = func_02("world") print(c) 3.reduce from functools import reduce def func_0

python中字符串格式化的四种方法

1 name = "huangemiling" 2 age= 10 3 address = 'nanjing' 4 print("My name is %s,age is %d,I come from %s"%(name,age,address)) 5 print("My name is {0},age is {1},I come from {2}".format(name,age,address)) 6 print("My name

python中字符串拼接

python中字符串拼接的三种方式: 1.使用 '+': 这中方式会在内存中,没使用一次就开辟一个新的空间,不建议使用.当数据庞大时候效率很低.后期有垃圾回收机制来处理没有用的字符串 案例:name = 'jam' name1 = name + 'c'这样内存中会开辟一个空间存放 name2 = name1 + 'h''这样内存中会再开辟一个空间存放 2.字符串格式化的形式:%s,这中方式让内存最多就开辟两个空间来进行存放字符. 案例:name = 'jam' name2 = 'chen' se

Python中字符串格式化如何实现?

Python开发中字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号方式 %[(na

python中字符串格式化%与.format

Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号