4-4如何将多个小字符串拼接成一个大的字符串

1、使用操作符+

>>> s1 = 'abcdefg'
>>> s2 = '12345'
>>> s1 + s2
'abcdefg12345'

此”+”是重载运算符,实际上调用的是str.__add__内置方法。

>>> str.__add__ (s1,s2)
'abcdefg12345'

这种方法当数据量大的时候,会占用较多资源。

如果只是很简单的字符串拼接,可以使用,这样更简捷。

2、使用str.join()

>>> help(str.join)
Help on method_descriptor:

join(...)
    S.join(iterable) -> string
    
    Return a string which is the concatenation of the strings in the
iterable.  The separator between elements is S.
help(str.join)

传入一个可迭代对象,用S字符串对象做为分隔符连接起来。

例:

>>> ';'.join(['abc','123',456,'xyz'])

Traceback (most recent call last):
  File "<pyshell#46>", line 1, in <module>
    ';'.join(['abc','123',456,'xyz'])
TypeError: sequence item 2: expected string, int found


>>> ';'.join(['abc','123','456','xyz'])
'abc;123;456;xyz'
>>> ';'.join(['abc','123','456','xyz'])
'abc;123;456;xyz'
>>> ''.join(['abc','123','456','xyz'])
'abc123456xyz'
>>> ' '.join(['abc','123','456','xyz'])
'abc 123 456 xyz'

如上例中要把列表中的非字符串,以字符串的形式拼接时,有两种方法

方法一:列表解析

>>> ''.join([str(x) for x in ['abc','123',456,'xyz']])
'abc123456xyz'

将列表中的每一项通过str(x)转化为字符串。

通过列表解析式的方法会生成一个临时列表,如果这个列表很长,会造成比较大的浪费。不建议使用。

方法二:生成器表达式

>>> (str(x) for x in['abc','123',456,'xyz'] )
<generator object <genexpr> at 0x02C60B70>

如上将列表解析的方框号“[]”转为小括号“()”就变成了生成器对象。生成器对象每次执行时,才生成一个,不像列表解析一次性全部列出,所以比较节省资源。建议使用

>>> ''.join(str(x) for x in ['abc','123',456,'xyz'])
'abc123456xyz'

生成器表达式作为参数可以不写小括号“()”

 

转载于:https://www.cnblogs.com/smulngy/p/8871854.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值