Python join()函数使用详解

Python join()函数使用详解文章详细介绍了 Python 中 join 函数的使用 包括参数要求 拼接不同数据类型如字符串 列表 元组和字典的示例 以及 join 与 在拼接字符串时的效率差异

大家好,欢迎来到IT知识分享网。

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

join() 可以将元素按照分隔符「拼接」成新的字符串。

语法

string.join( Iterable[str] ) 

参数

  • Iterable[str] :(必选,可迭代的序列)要拼接的元素

返回值

  • 返回拼接后的新字符串

实例:用*将数组中的字符串拼接在一起

print('*'.join(['1', '2', '3'])) 

输出:

1*2*3 

1、参数要求

1) join() 只接收「一个参数」,否则会报错 TypeError: join() takes exactly one argument

在这里插入图片描述

2)接收的参数必须是「可迭代对象」(有__iter__方法的对象),否则会报错 TypeError: can only join an iterable

在这里插入图片描述

3)参数是可迭代对象时,里面的所有「元素」都必须是「字符串类型」,否则会报错 TypeError: sequence item 0: expected str instance

在这里插入图片描述

源码中也写明了,给的是一个字符串(Python内置函数看不到具体源码,只有描述)。

在这里插入图片描述

2、拼接不同的数据类型

join() 可以拼接列表、元组、字典等可迭代序列,但拼接的情况并非完全相同。

2.1、字符串

「字符串」也是可迭代序列,拼接时,会逐个「字符」拼接

print('*'.join('abc123')) 

输出:

a*b*c*1*2*3 

2.2、列表

拼接「列表」时,会逐个「元素」进行拼接

print('*'.join(['aa', 'bb', 'c'])) 

输出:

aa*bb*c 

2.3、元组

拼接「元组」时,也是逐个「元素」进行拼接

print('*'.join(('aa', 'bb', 'c'))) 

输出:

aa*bb*c 

2.4、字典

拼接「字典」时,只会拼接「键」,而不拼接「值」;即使有非字符串类型的值,也不会报错

print('*'.join({ 
        'key1': 'value1', 'key2': 2})) 

输出:

key1*key2 

3、join和+的区别?

面试可能会问, join() +都可以拼接字符串,但 join() 的拼接「效率」+要快很多。

首先,字符串是「不可变」的,拼接字符串得开辟新的内存空间,用来存储拼接后的字符串。

+ 在拼接字符串时,会先开辟内存空间,把拼接后的字符串放进去,每一个 + 都会开辟一次内存空间。

join() 拼接字符串时,会提前算好需要开辟多大的空间,然后申请内存,把拼接后的字符串放进去,无论拼接多少字符串,都只开辟一次内存空间。

我们用代码验证一下两者的拼接效率

import time list1 = ['test str' for n in range()] start_time = time.time() a = '' for i in list1: a = a + i end_time = time.time() print(end_time - start_time) start_time = time.time() b = ''.join(list1) end_time = time.time() print(end_time - start_time) 

输出:

8.96 0.0081055 

综上所诉,+ 会消耗更多的临时内存,并且数据量越大,效率越低。







免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/115233.html

(0)
上一篇 2025-12-04 09:15
下一篇 2025-12-04 09:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信