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多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
详解Python装饰器
Mar 25 Python
python制作填词游戏步骤详解
May 05 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
python 并发下载器实现方法示例
Nov 22 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
python实现腾讯滑块验证码识别
Apr 27 Python
利用python做数据拟合详情
Nov 17 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
ASP知识讲座四
2006/10/09 PHP
一个程序下载的管理程序(二)
2006/10/09 PHP
php4的session功能评述(一)
2006/10/09 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
python分割文件的常用方法
2014/11/01 Python
python对url格式解析的方法
2015/05/13 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
广播节目策划方案
2014/05/23 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
建筑管理专业求职信
2014/07/28 职场文书
2014个人年度工作总结
2014/12/15 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
解析MySQL索引的作用
2022/03/03 MySQL
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers