广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python学习笔记整理(七)Pytho
  • 375
分享到

Python学习笔记整理(七)Pytho

学习笔记PythonPytho 2023-01-31 06:01:03 375人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

一、元组介绍 元组(tuple)是无法修改的其他对象的结合.元组由简单的对象构成,元组与列表类似,不过元组不能在原处修改。通常写成圆括号中的一系列项。 1、元组的属性 *任意对象的有序集合 与字符串和

一、元组介绍
元组(tuple)是无法修改的其他对象的结合.元组由简单的对象构成,元组与列表类似,不过元组不能在原处修改。通常写成圆括号中的一系列项。
1、元组的属性
*任意对象的有序集合
字符串和列表类似,元组是一个位置有序的对象集合。与列表相同,可以嵌入任何类别的对象到其中,可以嵌套元组,列表,字典。
*通过偏移存取
同字符串,列表一样,在元组中的元素通过偏移来访问。支持所有基于偏移的操作,如果索引和分片
*属于不可变序列类型
类似于字符串,元组不可变,不支持在原处修改。与字符串和列表类似,元组有序列.
注意:元组的不可变性只使用与元组本身顶层而非其内容,元组的内部的列表,字典可以像往常那样修改。
*对象引用的数组
与列表类似,元组最好被认为是对象引用的数组。元组存储指向其他对象的存取点(引用),并且对元组进行索引操作的速度相对较快。
2、常见的元组操作
运算        解释
()        空元组
t1=(0,)        单个元组的元组(非表达式)
t2=(0,'A',1.3,4) 四个元素的元组
t2=0,'A',1.3,4  四个元素的元组
t3=(1,('A','B'))  嵌套元组
t4=(1,('A', 'B'),[4,5,6],{'name':'diege','age':18})    元组嵌套元组,列表,字典
t1[i]        索引
t1[i][j]    嵌套的索引
t1[i:j]        分片
len(t1)        长度,每一个元素算一个,不过元素是列表还是字典
len(t4)+len(t4[1])+len(t4[2])+len(t4[3])
t1+t2        合并
t2*3        重复
for x in t1:    迭代
'diege' i t2    成员关系

二、实际应用中的元组
1、元组的特殊语法,逗号和圆括号
>>> x=(40)
>>> x
40
>>> x=(40,)
>>> x
(40,)
在不引起语法冲突的情况下,python允许忽略元组的圆括号,仅当元组做为文字传递给函数调用(圆括号很重要)以及当元组在print语句中列出(逗号很重要)的特殊情况时,圆括号才是必不可少的。
2、转换以及不可变性
除了常量语法不同外,元组的操作和字符串以及列表是一致的,值得注意的区别在于+ *以及分片操作应用于元组后将返回新的元组。并且元组不提供字符串,列表,字典中的方法。例如像对元组进行排序,通常先得将它转换为列表才能获得使用排序方法调用的权限将它变成一个可变的对象。
>>> T=('cc','aa','dd','bb')
>>> temp=list(T)
>>> temp.sort()
>>> temp
['aa', 'bb', 'cc', 'dd']
>>> T=tuple(temp)
>>> T
('aa', 'bb', 'cc', 'dd')

注意:元组的不可变性只使用与元组本身顶层而非其内容,元组的内部的列表,字典可以像往常那样修改。
>>> T=('a',[8,9],3.14)
>>> T[1]=10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> T[1][1]=10
>>> T
('a', [8, 10], 3.14)
3、为什么有了列表还要元组?
Python的创造者,提到过把元组看作是简单的对象组合,把列表看成是随时间改变的数据结构。最佳答案似乎是元组的不可改变性提供了某种完整性,保证了数据的完整性。列表是定序集合的选择工具,可能需要进行修改。而元组能够处理其他固定关系的情况。

三、文件介绍
文件这个主要内置对象类型提供了一种可以存取Python程序内部文件的方法。
内置open函数会创建一个Python文件对象,可以作为计算机上的一个文件连接,在调用open之后,可以通过调用返回文件对象的方法来读写相关外部文件。文件可以通过调用open或file来打开。open通常比file更常用,因为file几乎都是为面向对象程序设计量身打造的。文件对象只是常见文件处理任务输出模块。多数文件方法都是执行外部文件的相关文件对象的输如输出有关,但其他文件方法可让查找文件中新位置,刷新输出缓冲等。
1、打开文件
处理模式没没有指定则默认为'r'。代表输入打开文件。'w'代表输出生成并打开文件,'a'代表为在文件尾部追加内容而打开文件。
"+"意味着同时为输入输出打开文件(也就是说,同时对象进行读写)
>>>f1=file('python.data','w')
>>>f1=open('python.data','w')
>>> f1.write('test for pyton !\n')
>>> f1.close()                   
>>> f1=open('python.data','r')    
>>> f1.read()
'test for pyton !\n'
>>> f1.readline()
''
>>> f1.readlines()
[]
常见的文件运算
操作                    解释
output=open('/tmp/python.data','w') 创建输出文件,写入文件
input=open('/tmp/python.data','r') 创建输入文件,读取文件
input=open('/tmp/python.data')   创建输入文件,读取文件 r是默认值
aString=input.read()         把整个文件读进一个字符串
aString=input.read(N)         读取前面的N个字节到一个字符串
aString=input.readline(N)      读取下一行到一个字符串
aList=input.readlines()         读取剩下的行到一个字符串列表
output.write(aString)         写入字节字符串到文件
output.writelines(aList)    把列表内所有字符串写入到文件,列表里不能有数字,数字需要转换为字符串
output.close()            手动关闭(当文件收集完成时会关闭文件
output.flush()            把输出缓冲区刷到硬盘中,但不关闭文件。
anyfile.seek(N)            修改文件位置到偏移量N处以便进行一下操作
要打开的两个参数必须是Python的字符串,第三个是可选参数。它能够用来控制输出缓存。传入"0"意味着输出无缓存(写入方法调用即时传递给外部文件)
>>> output=open('/tmp/python.data','a',0)
>>> output.write('write son \n')
# tail /tmp/python.data
2、使用文件
在任何情况下,Python程序中的文本文件采用字符串形式,读取文件时会返回字符串形式的文本。现在从文本读取文件行的最佳方式是根本不要读取该文件。文件也有个迭代器会自动地在for循环,列表解析或者其他迭代语句中对文件进行逐行读取。
注意:从文件读取的数据回到脚本是一个字符串,所以如果字符串不是需要的类型。就得将其转换成其他类型的Python对象。同样。将数据写入文件时,Python会自动把对象转换为字符串--必须传递一个已经格式化的字符串、。
Python高级标准工具,处理一般对象存储(如pickle模块),处理文件中打包的二进制数据(如struct模块)
3、在文件中存储并解析python对象
>>> X,Y,Z=43,44,45
>>> output=open('/tmp/python.data','a',0)        
>>> output.write('%s,%s,%s'% (X,Y,Z))
>>> L=[1,2,3]
>>> D={'a':1,'b':2}
>>> output.write(str(L)+'$'+str(D)+'\n') 
>>> output.close()
>>> f1=open('/tmp/python.data').read() 
>>> f1
"43,44,45\n[1, 2, 3]${'a': 1, 'b': 2}\n
>>> print f1
43,44,45
[1, 2, 3]${'a': 1, 'b': 2}
print 会解释内嵌换行符
鉴于Python不会自动把字符串转换为数字或其他类型的对象,如果需要使用索引,加法等普通对象工具,那么就必须使用转换工具
>>> f1=open('/tmp/python.data')      
>>> line=f1.readline()   
>>> line
'write son \n'
>>> line.rstrip()
'write son
rstrip方法去掉多余的终止符,line[:-1]分片也可以,但是只有确认所有行都含有"\n”的时候才行(文件中最后一行有时候会没有)
>>> line=f1.readline()
>>> line
'43,44,45\n'
>>> parts=line.split(',')
>>> parts
['43', '44', '45\n']
>>> int(parts[1])
44
转换文件第三行存储列表和字典,可以运行eval这一内置函数,eval能够把字符串当做可执行的程序代码。

>>> line=f1.readline()
>>> line
"[1, 2, 3]${'a': 1, 'b': 2}\n"

>>> parts=line.split('$')
>>> parts
['[1, 2, 3]', "{'a': 1, 'b': 2}\n"]
>>> parts[0]
'[1, 2, 3]'
>>> eval(parts[0])  #可以把对象解析成本身的类型
[1, 2, 3]
>>> objs=[eval(P) for P in parts]
>>> objs
[[1, 2, 3], {'a': 1, 'b': 2}]
这些解析和转换最总结果是一个普通的python对象列表,而不是字符串。
4、使用pickle存储Python原生对象 【推荐】
使用eval可以把字符串转换成对象。这是一个强大的工具,有时过于强大,执行python的任何表达式,甚至是有可能会删除计算机上所有文件的表达式。
如果想存储Python原生对象,但无法信赖文件的数据来源,使用pickle模块是最理想的选择。
写入
>>> f1=open('/tmp/python.data','w',0)
>>> D  
{'a': 1, 'b': 2}
>>> import pickle
>>> pickle.dump(D,f1)
>>> f1.close()
读取
>>> f1=open('/tmp/python.data')     
>>> E=pickle.load(f1)
>>> E
{'a': 1, 'b': 2}
pickle.dump() 两个参数一个写入的内容,一个文件
pickle.load() 一个参数  文件 一次读取一行
>>> E=pickle.load(f1)
>>> E
[1, 2, 3]
5、其他工具
seek函数能够复位在文件中的当前位置(下次读写应用在该位置)
flush能够强制性将缓冲输出写入磁盘(文件总会模式进行缓存)
可以在交互模式下运行dir或者helo,输入file单词寻求帮助

四、重访类型分类
对象类型    分类    是否可变
数字        数值     不可变
字符串        序列     不可变
列表        序列       可变
字典          对应(映射) 可变
元组        序列     不可变
文件        扩展     N/A
五:对象灵活性
* 列表,字典,元组可以包含任何种类的对象。
* 列表,字典,元组可以任意嵌套
* 列表,字典可以动态扩大和缩小。
六、比较,相等性和真值
所有的Python对象都可以支持比较操作--测试相等性,相对大小等。
>>> L1=[1,('a',3)]
>>> L2=[1,('a',3)]
>>> L1==L2,L1 is L2
(True, False)
*"=="操作符测试值的相等性。Python运行测试,递归地比较所有内嵌对象。
* "is"表达式测试对象的一致性。Python测试二者是否是同一个对象。
>>> S1='diege'
>>> S2='diege'
>>> S1==S2,S1 is S2
(True, True)
因为python会缓存短数字和短字符串缘故。
>>> S1='a longer string'
>>> S2='a longer string'
>>> S1==S2,S1 is S2
(True, False)
>>> L1=[1,('a',3)]     
>>> L2=[1,('a',2)] 
>>> L1<L2,L1==L2,L1>L2
(False, False, True)
一般来说,Python中不同的类型比较方法如下:
*数字通过相对大小进行比较。
*字符串按照字典顺序,一个符接一个符地进行比较 ('a'<'b' ,'abc'<'ac'第二个字符串 b小于c)
*列表和元组从左到右对每部分的内容进行比较。
*字典通过排序之后的(键,值)列表进行比较。
七、Ptyhon中真和假的含义
Python中,与大多数程序设计语言一样。,整数0代表假,整数1代表真。除此之外Python也把任意的空数据结构视为假,把任何非空数据结构视为真、
更一般地,真和假的概念是Python中每个对象的固有属性。每个对象不是真就是假。
* 数字如果非0,则为真
* 其他对象如果非空,则为真
* 特殊的对象None 总被认为是假 一般起一个空的占位作用。
Python的布尔类型bool只不过是扩展了Python中真,假的概念。这些只是整数1和0的定制版本而已。
像if这样逻辑语句中,没有必要使用布尔类型,所有对象本质上依然是真或假,即时使用其他类型。
八 :Ptyon类型的层次
Python中所有一切都是某种类型的对象,即便是默认对象的类型。任何对象的类型都是类型为“type”的对象。
每个核心类型都有个新的内置名来支持面向对象子类的类型定制
dict,list,str,tuple,int,long,float,complex,unicode ,type,file。调用这些名称事实上是对这些对象构造函数的调用,而不仅仅是转换函数。
isinstance函数进行类型测试也是有可能的。
>>> isinstance([1],list)
True
>>> type([1])==list
True
>>> type([1])==type([])
True
九、Pythn中的其他类型
除了核心对象外,典型的Python的安装还有几十种其他可用的对象类型。允许作为C语言的扩展程序或是Python的类:
正则表达式对象,DBM文件,GUI组件,网络套接字等。
十、内置类型陷阱。
1、赋值生成引用,而不是拷贝
2、重复能够增加层次深度
3、留意循环数据结构
如果遇到一个复合对象包含指向自身的引用,就称之为循环对象。无论何时Python在对象中检测到循环,都会打印成[...]而不会陷入无限循环。
尽量不要使用循环引用。不想让对象在实际中频繁的引用自身。
4、不可变类型不可以在原处改变。
 有些地方的确需要拷贝,那么可以明确要求
* 没有限制条件的分片表达式(L[:])能够赋值序列
* 字典copy方法(D.copy())能够复制字典
* 有写内置函数(例如,List)能够生产拷贝(list(L))
* copy标准库模块能够生成完整拷贝

--结束END--

本文标题: Python学习笔记整理(七)Pytho

本文链接: https://www.lsjlt.com/news/189517.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python学习笔记整理(七)Pytho
    一、元组介绍 元组(tuple)是无法修改的其他对象的结合.元组由简单的对象构成,元组与列表类似,不过元组不能在原处修改。通常写成圆括号中的一系列项。 1、元组的属性 *任意对象的有序集合 与字符串和...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(八)Pytho
      程序由模块构成 模块包含语句 语句包含表达式 表达式建立并处理对象 一、Python语句 语句 角色 列子 赋值 创建引用 a,b,c='good','bad...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(九)Pytho
    赋值语句,表达式语句,打印 一、赋值语句 赋值语句给对象命名,基本形式是在等号左边写赋值语句的目标,右边写赋值的对象。左边可以是变量名或对象元素,而右侧的对象可以是任何会计算得到的对象表达式 。 1、赋值...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(一)pytho
    Python对象类型 说明:python程序可以分解成模块,语句,表达式以及对象。 1)、程序由模块构成 2)、模块包含语句 3)、语句包含表达式 4)、表达式建立并处理对象 一、...
    99+
    2023-01-31
    学习笔记 Python pytho
  • Python学习笔记整理(十)Pytho
    if语句是选取要执行的操作. 一、if语句 1、通用格式 形式是if测试,后面跟着一个或多个可选的elif(else if)测试,以及一个最终选用的else块。测试和else部分可以结合嵌套语句块,缩进列在行首...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(二)pytho
    一、Python的数字类型 1、数字常量 python数字类型在程序中如何显示(换句话说,作为常量) 数字            常量 1234,-23,0        一般整数 9999...
    99+
    2023-01-31
    学习笔记 Python pytho
  • Python学习笔记整理(四)Pytho
    字符串是一个有序的字符集合,用于存储和表现基于文本的信息。 常见的字符串常量和表达式 T1=‘’ 空字符串 T2="diege's" 双引号 T3="""...""" 三重引号块 T4=r'...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(五)Pytho
    列表和字段,这两种类型几乎是Python所有脚本的主要工作组件。他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套。 一、列表 列表的主要属性: *任意对象的有序集合 ...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(六)Pytho
    一、字典介绍 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 1、字...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记 --- pytho
    对于python操作scp不输入密码还有一个很好的解决方案: 就是利用python中的 pexpect ,类似于linux下expect这个包。 使用方式如下: 上面的file_transfer()就是使用了免密的方式。 想看源码...
    99+
    2023-01-31
    学习笔记 Python pytho
  • python学习笔记(1)--pytho
    Python 语言概述 面向对象、解释型计算机程序设计语言。 语法简洁、清晰、丰富和强大的类,能够把用其他语言(如c++/c)制作的各种模块很轻松的连接起来(胶水语言)。 是纯粹的自由软件,源代码和解释器Cpython均遵循GP...
    99+
    2023-01-31
    学习笔记 python pytho
  • Python学习笔记(29)-Pytho
    一,简介 上一篇已经介绍了python-docx模块的安装和导入,本篇直接介绍如何创建并写入word文档,需要注意的是:创建word并写入之后,操作的都是内存中的对象,最后需要保存到文件,才能看到真实的文件。 二,代码演示 非常简...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(十七)异常处理
    一、异常基础 try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序) ...
    99+
    2023-01-31
    学习笔记 异常 Python
  • Python学习笔记—第一章—Pytho
    书目:Python(Unix和Linux系统管理指南)学习日期:20120627知识点总结:Python的优势:既简单易学,也可以完成任何复杂任务可读性好(严格的代码缩进格式)支持面向对象编程(OOP)强大的Python社区强大的Pytho...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • python学习笔记1——安装pytho
    python学习笔记1——安装pythoncentos和ubuntu的python2.7的安装方法参考:http://daixuan.blog.51cto.com/5426657/17673251、查看当前python版本并且[root@l...
    99+
    2023-01-31
    学习笔记 python pytho
  • Python学习笔记-打包发布Pytho
    Python模块、扩展和应用程序可以按以下几种形式进行打包和发布: python setup.py获取帮助的方式    python setup.py --help    python setup.py --help-commands 所有...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python学习笔记整理(十二)Pyth
    一、函数基础 函数可以计算出一个返回值。作用:最大化代码重用,最小化代码冗余,流程的分解 1、函数相关的语句和表达式 语句        例子 Calls        myfunc(‘diege',...
    99+
    2023-01-31
    学习笔记 Python Pyth
  • Python学习笔记整理(十三)Pyth
    一、模块 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。实际的角度,模块往往对应Python程序文件。 每个文件都是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名。模块可以...
    99+
    2023-01-31
    学习笔记 Python Pyth
  • Python学习笔记整理(十一)pyth
    while语句,提供了编写通用循环的一种方法,而for语句是用来遍历序列对象内的元素,并对每个元素运行一个代码块。break,continue用在循环内,跳出整个循环或者跳出一次循环。 一、while循环 1、一般格式&...
    99+
    2023-01-31
    学习笔记 Python pyth
  • Redis学习笔记(七) 数据库
    Redis 服务器将所有的数据库都保存在服务器状态redisServer结构的db数组中,db数组的每个项都是一个redisDB: struct redisServer{ //一个数组保存着服务器中的所有数据库 redi...
    99+
    2019-03-15
    Redis学习笔记(七) 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作