python学习-元祖1

出自:https://blog.csdn.net/gavin_john/article/details/49893719

最后一个Python集合类型——元组(tuple)

属性如下:
任意对象的有序集合
通过偏移存取
属于不可变序列类型
固定长度、异构、任意嵌套
对象引用的数组

实际应用中的元组:

[java]  view plain  copy
  1. >>> (1,2)+(3,4)  
  2. (1234)  
  3. >>> (1,2)*4  
  4. (12121212)  
  5. >>> T = (1,2,3,4)  
  6. >>> T[0],T[1:3]  
  7. (1, (23))  
元组的特殊语法:逗号和圆括号

因为圆括号也可以把表达式括起来,如果圆括号里的单一对象是元组对象而不是一个简单的表达式,需要对Python进行特别说明,如果确实想得到一个元组,只要在这一单个元素之后、关闭圆括号之前加一个逗号就可以了。
[python]  view plain  copy
  1. >>> x = (40)  
  2. >>> x  
  3. 40  
  4. >>> y = (40,)  
  5. >>> y  
  6. (40,)  
作为特殊情况,在不会引起语法冲突的情况下,Python允许忽略元组的圆括号
==================================================================== =======================

转换、方法以及不可变性

如果你想对元组进行排序,通常先得将它转换为列表并使其成为一个可变对象,才能获得使用排序方法的权限,或者使用新的sorted内置方法,它接受任何序列对象:

[python]  view plain  copy
  1. >>> T = ('cc','aa','dd','bb')  
  2. >>> T.sort()  
  3. Traceback (most recent call last):  
  4.   File "<pyshell#91>", line 1in <module>  
  5.     T.sort()  
  6. AttributeError: 'tuple' object has no attribute 'sort'  
[python]  view plain  copy
  1. >>> tmp = list(T)  
  2. >>> tmp.sort()  
  3. >>> tmp  
  4. ['aa''bb''cc''dd']  
  5. >>> T = tuple(tmp)  
  6. >>> T  
  7. ('aa''bb''cc''dd')  
[python]  view plain  copy
  1. >>> sorted(T)  
  2. ['aa''bb''cc''dd']  
列表解析也可用于元组的转换。例如,下面这个由元组生成的列表,过程中将每一项都加上20:

[python]  view plain  copy
  1. >>> T = (1,2,3,4,5)  
  2. >>> L = [x +20 for x in T]  
  3. >>> L  
  4. [2122232425]  
【列表解析是名副其实的序列操作——它们总会创建新的列表,但也可以用于遍历包括元组、字符串以及其他列表在内的任何序列对象。我们将会看到,列表解析甚至可以用在某些并非实际储存的序列之上——任何可遍历的对象都可以,包括可自动逐行读取的文件】

===========================================================================================
文件
内置open函数会创建一个Python文件对象,可以作为计算机上的一个文件链接

操作解释
output=open(r'C:\spam','w')创建输出文件(‘w’是指写入)
input=open('data','r')创建输入文件(‘r’是指读写)
input=open('data')与上一行相同(‘r’是默认值)
aString=input.read()把整个文件读进单一字符串
aString=input.read(N)读取之后的N个字节(一个或多个)到一个字符串
aString=input.readLine()读取下一行(包括行末标识符)到一个字符串
aList=input.readlines() 读取文件到字符串列表
output.write(aString)写入字节字符串到文件
output.writelines(aList)把列表内所有的字符串写入文件
output.close() 手动关闭(当文件收集完成时会替你关闭文件)
output.flush()把输出缓冲区刷到硬盘中,但不关闭文件
anyFile.seek(N) 修改文件位置到偏移量N处以便进行下一个操作
for line in open('data'):use line文件迭代器一行一行地读取
open('f.txt',encoding='latin-1')Python3.0 Unicode文本文件(str字符串)
open('f.bin','rb')Python3.0二进制byte文件(bytes字符串)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

打开文件

为了打开一个文件,程序会调用内置open函数,首先是外部名,接着是处理模式。模式典型地用字符串‘r’代表为输入打开文件(默认值),‘w’代表为输出生成并打开文件,‘a’代表为在文件尾部追加内容而打开文件。

-----------------------------------------------------------------------------------------------------------------------------------------------------------
使用文件

基础用法提示:
文件迭代器是最好的读取行工具
内容是字符串,不是对象
close是通常选项
文件是缓冲的并且是可查找的

-----------------------------------------------------------------------------------------------------------------------------------------------------------

实际应用中的文件

[java]  view plain  copy
  1. >>> myfile = open('myfile.txt','w')  
  2. >>> myfile.write('hello text file\n')  
  3. 16  
  4. >>> myfile.write('goodbye text file\n')  
  5. 18  
  6. >>> myfile.close()  
  7. >>> myfile = open('myfile.txt','r')  
  8. >>> myfile.readline()  
  9. 'hello text file\n'  
  10. >>> myfile.readline()  
  11. 'goodbye text file\n'  
  12. >>> myfile.readline()  
  13. ''  
注意第三个readline调用返回一个空字符串,这是Python文件方法告诉我们已经到达文件底部(文件的空行是含有新行符的字符串,而不是空字符串)

如果想要显示带有行末字符解释的文件内容,用文件对象的read方法把整个文件读入到一个字符串中,并打印它:

[python]  view plain  copy
  1. >>> open('myfile.txt').read();  
  2. 'hello text file\ngoodbye text file\n'  
  3.   
  4. >>> print(open('myfile.txt').read())  
  5. hello text file  
  6. goodbye text file  
如果想要一行一行地扫描一个文本文件,文件迭代器往往是最佳选择:

[python]  view plain  copy
  1. >>> for line in open('myfile.txt'):  
  2.     print(line,end='')  
  3.   
  4.       
  5. hello text file  
  6. goodbye text file  
【int和一些其他转换方法会忽略数字旁边的空白】
【eval函数能够把字符串当作可执行程序代码(从技术上讲,就是一个含有Python表达式的字符串)】
-------------------------------------------------------------------------------------------------------------------- ---------------------------------------
pickle模块 是能够让我们直接在文件中存储几乎任何Python对象的高级工具,也并不要求我们把字符串转换来转换去,它就好像是超级通用的数据格式化的解析工具。例如,想要在文件中储存字典,就直接用pickle来储存。

[python]  view plain  copy
  1. >>> D ={'a':1,'b':2}  
  2. >>> F = open('datafile.pkl','wb')  
  3. >>> import pickle  
  4. >>> pickle.dump(D,F)  
  5. >>> F.close()  
之后,将来想要取回字典时,只要简单地再用一次pickle进行重建就可以了:
[python]  view plain  copy
  1. >>> F = open('datafile.pkl','rb')  
  2. >>> E = pickle.load(F)  
  3. >>> E  
  4. {'a'1'b'2}  
我们取回等价的字典对象,没有手动断开或转换的要求。pickle模块执行所谓的对象序列化(object serialization),也就是对象和字节字符串之间的相互转换。
==================================================================== =======================

重访类型分类

现在我们已经看到所有实际中的Python核心内置类型,让我们再看一看它们所共有的一些属性,以此来结束我们的对象类型之旅。

1.对象根据分类来共享操作;例如,字符串、列表和元组都共享诸如合并、长度和索引等序列操作;
2.只有可变对象(列表、字典和集合)可以在原处修改;我们不能原处修改数字、字符串或元组
3.集合类似于一个无值的字典的键,但是,它们不能映射为值,并且没有顺序;因此,集合不是一个映射类型或者序列类型。

===========================================================================================

“==”操作符测试值的相等性。Python运行相等测试,递归地比较所有内嵌对象。
“is”操作符测试对象的一致性。Python测试二者是否是同一个对象(也就是说,在同一个内存地址中)

数字如果为非零,则为真
其他对象如果非空,则为真

留意循环数据结构:如果遇到一个复合对象包含指向自身的引用,就称之为循环对象。无论何时Python在对象中检测到循环,都会打印成[...],而不会陷入无限循环

[python]  view plain  copy
  1. #这样可以交换元素值  
  2. >>> X = 'spam'  
  3. >>> Y = 'eggs'  
  4. >>> X,Y = Y,X  
  5. >>> X  
  6. 'eggs'  
  7. >>> Y  
  8. 'spam'  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值