出自:https://blog.csdn.net/gavin_john/article/details/49893719
最后一个Python集合类型——元组(tuple)
属性如下:
任意对象的有序集合
通过偏移存取
属于不可变序列类型
固定长度、异构、任意嵌套
对象引用的数组
实际应用中的元组:
- >>> (1,2)+(3,4)
- (1, 2, 3, 4)
- >>> (1,2)*4
- (1, 2, 1, 2, 1, 2, 1, 2)
- >>> T = (1,2,3,4)
- >>> T[0],T[1:3]
- (1, (2, 3))
因为圆括号也可以把表达式括起来,如果圆括号里的单一对象是元组对象而不是一个简单的表达式,需要对Python进行特别说明,如果确实想得到一个元组,只要在这一单个元素之后、关闭圆括号之前加一个逗号就可以了。
- >>> x = (40)
- >>> x
- 40
- >>> y = (40,)
- >>> y
- (40,)
==================================================================== =======================
转换、方法以及不可变性
如果你想对元组进行排序,通常先得将它转换为列表并使其成为一个可变对象,才能获得使用排序方法的权限,或者使用新的sorted内置方法,它接受任何序列对象:
- >>> T = ('cc','aa','dd','bb')
- >>> T.sort()
- Traceback (most recent call last):
- File "<pyshell#91>", line 1, in <module>
- T.sort()
- AttributeError: 'tuple' object has no attribute 'sort'
- >>> tmp = list(T)
- >>> tmp.sort()
- >>> tmp
- ['aa', 'bb', 'cc', 'dd']
- >>> T = tuple(tmp)
- >>> T
- ('aa', 'bb', 'cc', 'dd')
- >>> sorted(T)
- ['aa', 'bb', 'cc', 'dd']
- >>> T = (1,2,3,4,5)
- >>> L = [x +20 for x in T]
- >>> L
- [21, 22, 23, 24, 25]
===========================================================================================
文件
内置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是通常选项
文件是缓冲的并且是可查找的
-----------------------------------------------------------------------------------------------------------------------------------------------------------
实际应用中的文件
- >>> myfile = open('myfile.txt','w')
- >>> myfile.write('hello text file\n')
- 16
- >>> myfile.write('goodbye text file\n')
- 18
- >>> myfile.close()
- >>> myfile = open('myfile.txt','r')
- >>> myfile.readline()
- 'hello text file\n'
- >>> myfile.readline()
- 'goodbye text file\n'
- >>> myfile.readline()
- ''
如果想要显示带有行末字符解释的文件内容,用文件对象的read方法把整个文件读入到一个字符串中,并打印它:
- >>> open('myfile.txt').read();
- 'hello text file\ngoodbye text file\n'
- >>> print(open('myfile.txt').read())
- hello text file
- goodbye text file
- >>> for line in open('myfile.txt'):
- print(line,end='')
- hello text file
- goodbye text file
【eval函数能够把字符串当作可执行程序代码(从技术上讲,就是一个含有Python表达式的字符串)】
-------------------------------------------------------------------------------------------------------------------- ---------------------------------------
pickle模块 是能够让我们直接在文件中存储几乎任何Python对象的高级工具,也并不要求我们把字符串转换来转换去,它就好像是超级通用的数据格式化的解析工具。例如,想要在文件中储存字典,就直接用pickle来储存。
- >>> D ={'a':1,'b':2}
- >>> F = open('datafile.pkl','wb')
- >>> import pickle
- >>> pickle.dump(D,F)
- >>> F.close()
- >>> F = open('datafile.pkl','rb')
- >>> E = pickle.load(F)
- >>> E
- {'a': 1, 'b': 2}
==================================================================== =======================
重访类型分类
现在我们已经看到所有实际中的Python核心内置类型,让我们再看一看它们所共有的一些属性,以此来结束我们的对象类型之旅。
1.对象根据分类来共享操作;例如,字符串、列表和元组都共享诸如合并、长度和索引等序列操作;
2.只有可变对象(列表、字典和集合)可以在原处修改;我们不能原处修改数字、字符串或元组
3.集合类似于一个无值的字典的键,但是,它们不能映射为值,并且没有顺序;因此,集合不是一个映射类型或者序列类型。
===========================================================================================
“==”操作符测试值的相等性。Python运行相等测试,递归地比较所有内嵌对象。
“is”操作符测试对象的一致性。Python测试二者是否是同一个对象(也就是说,在同一个内存地址中)
数字如果为非零,则为真
其他对象如果非空,则为真
留意循环数据结构:如果遇到一个复合对象包含指向自身的引用,就称之为循环对象。无论何时Python在对象中检测到循环,都会打印成[...],而不会陷入无限循环
- #这样可以交换元素值
- >>> X = 'spam'
- >>> Y = 'eggs'
- >>> X,Y = Y,X
- >>> X
- 'eggs'
- >>> Y
- 'spam'