python join方法使用详解


Posted in Python onJuly 30, 2019

join方法

join这个方法,将可迭代的数据类型,转为字符串或者bytes,没错可以转为bytes类型。注意这个可迭代的数据中的元素必须是相同类型的。

jion里的参数可迭代对象就行,可迭代对象是指有__iter__方法的对象

# 列表为可迭代对象
list_1 = ["1","2","3","4"]  # 元素为字符串的列表
res = "".join(list_1)    # res的值为 "1234",数据类型为str

# 字典为可迭代对象
dict_1 = {"key1":"value2","key2":"value2"} # key为字符串类型的字段
res = "".join(dict_1)    # res的值为"key1key2",数据类型为str

# 自己写一个可迭代的对象
class A:
  __field = []

  def __init__(self, *args):
    for i in args:
      self.__field.append(i)

  def __iter__(self):
    changdu = len(self.__field)
    for i in range(self.__index, changdu):
      yield self.__field[i]

a = A("1","2","3","4")
res = "".join(a)     # res的值为"1234",数据类型为str

join为python的内置方法,具体源码是看不到的,我们大概也可以知道。对于上面代码中的变量list_1,dict_1,a都是可迭代对象。我们for循环它们,就可以拿到一个值,然后再将这个值进行相应的处理就ok

# 比如 "--".join(list_1)这个操作,它的输出为"1--2--3--4",一个字符串
list_1 = ["1","2","3","4"]
param = "--"
res = ""
for i in range(len(list_1)):
  if i == len(lis) - 1:
    res += lis[i]
  else:
    res += lis[i]
    res += param
print(res)  # 输出为 "1--2--3--4"

# 那么字典,还有对象a呢?
print(list(dict_1))  # 输出 ["key1","key2"]
print(list(a))    # 输出 ["1","2","3","4"]

我们实现join方法就是,将可迭代的对象先转为list类型,然后再执行上面那段代码(for循环那段)。这样大概能完成jion方法了

join方法最终返回值为str类型或者bytes类型,返回什么类型,要看是哪种类型的数据调用了join方法,比如上面的那些代码,全是由字符串调用,所以返回的也都是字符串类型。

"||".join(["a","b","c"])  # 输出 "a||b||c",类型为str
b"||".join([b"a", b"b", b"c"]) # 输出 b"a||b||c",类型为bytes类型

str类型数据调用了join方法,那么传入的可迭代对象,它的list(可迭代对象)里的元素也必须是str类型,如果为其他类型的话,程序就会报错。bytes类型调用也是一样,元素必须为bytes类型。

list_2 = ["1","2",3,4] # 列表中的元素由str类型,int类型
"".join(list_2)

执行上面的代码,程序会报错:TypeError: sequence item 2: expected str instance, int found

大概意思是接受字符串类型数据,发现了int类型数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 中的列表解析和生成表达式
Mar 10 Python
python基础教程之数字处理(math)模块详解
Mar 25 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
python 类详解及简单实例
Mar 24 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
python实现弹跳小球
May 13 Python
python 执行终端/控制台命令的例子
Jul 12 Python
Python:type、object、class与内置类型实例
Dec 25 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
用ldap作为django后端用户登录验证的实现
Dec 07 Python
python实现屏保程序(适用于背单词)
Jul 30 #Python
python实现各种插值法(数值分析)
Jul 30 #Python
Django 通过JS实现ajax过程详解
Jul 30 #Python
django 微信网页授权认证api的步骤详解
Jul 30 #Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 #Python
python tkinter实现屏保程序
Jul 30 #Python
python pandas 时间日期的处理实现
Jul 30 #Python
You might like
第十五节--Zend引擎的发展
2006/11/16 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
php魔术变量用法实例详解
2014/11/13 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
PHP创建XML接口示例
2019/07/04 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
python动态监控日志内容的示例
2014/02/16 Python
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python编程之序列操作实例详解
2017/07/22 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
员工试用期考核自我鉴定
2014/04/13 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书