python学习笔记:元组(turple)、文件(file)及其他

python学习笔记:元组(turple)、文件(file)及其他

一、元组(turple)

  • 元组(turple)是由简单的对象构成的,十分类似于列表,不同的地方在于元组是不可在原处修改的,并且通常以圆括号与圆括号中的一系列项的形式展示出来。
  • 元组(turple)的位置是有序的,可以通过偏移来访问,因此也就支持索引、分片与合并等操作。
  • 元组(turple)具有固定的长度,在不生成一个拷贝的情况下,是无法增长或者缩短的(也就是说不能在原处改变),但是元组是支持嵌套的。
  • 常见的元组常量和运算如下表:
运算解释
T = ()新建空元组
T = (0,)新建单个项的元组
T = (0, ‘1’, 1.2, ’ ASD’)新建四项元组
T = 0, ‘1’, 1.2, ’ ASD’新建四项元组
T = (‘ASD’, (‘ZXC’, 0))嵌套
T[i]按偏移访问
T[i][j]按偏移访问
T[i:j]分片
len(T)求取长度
T1+T2合并
T*3重复
for x in T:print(x)迭代与成员关系
‘spam’ in T迭代
[x ** 2 for x in T]迭代与成员关系
T.index(‘NI’)搜索
T.count(‘NI’)计数
  • 注意:
  • 元组(turple)在“*”、“+”以及分片操作时,将返回新元组。
  • 元组(turple)内部列表是可以在原处修改的。

二、文件(file)

  • 此部分主要是讲python里面的内置对象 (文件对象) 提供了一种可以存取python程序内部文件的方法。

  • 常见的文件运算如下表:

操作解释
output = open(r’C:\spam’, ‘w’)创建输出文件,’w‘指的是写入
input = open(‘data’, ‘r’)创建输入文件,'r’指的是读写文件
input = open(‘data’)创建输入文件,默认同上
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’)Unicode文本文件
open('f.bin, ‘rb’)二进制文件
  • 文件处理模式:
操作解释
r按输入打开文件
w输出生成打开文件
a在文件尾部追加内容而打开文件
rb按输入打开文件并进行二进制处理
wb输出生成打开文件并进行二进制处理
r+同时按输入和输出方式打开文件
w+同时按输入和输出方式打开文件
  • 文件迭代器是最好的读取行的工具。现在从文本读取文字行的最佳方式时根本不要读取改文件,而是使用文件迭代器。
  • 文件中的内容是字符串而不是对象,因此在读写的时候,经常会需要进行类型转换。
  • 使用close时个不错的习惯,它可以终止与外部文件的连接。虽然只要对象不再被引用,python内部就会进行垃圾回收,也就自动关闭对应的文件,但是关闭文件的特性并不是python语言定义的一部分,所以调用close还是我们需要养成的一个习惯。
  • 关闭文件指的是既释放了操作系统的资源也清空了缓冲区。默认时,输出文件总是缓冲的,也就是说,写入的文件不一定会立马进入硬盘,但关闭一个文件或者调用flush方法可以迫使缓存的数据进入硬盘。
  • 实际应用中的操作:
    line.rstrip(),line.split(’,’),eval(parts[0])。其中字符串方法rstrip()可以删除末尾多余的行终止符;字符串方法split(’,’)可以按逗号分隔开得到列表;eval()可以把字符串当作可执行的程序代码。

三、其他

  • 用pickle存储python的原生对象,pickle模块能让我们直接在文件中存储几乎任何python对象的工具,例如:
>>>D = {'a':1,'b':2}
>>>F = open('datafile.pkl','wb')
>>>import pickle
>>>pickle.dump(D,F)
>>>F.close()
  • 之后想要取回字典时,只需用一次pickle重建就可以了:
>>>F = open('datafile.pkl','rb')
>>>E = pickle.load(F)
>>>E
>>>{'a':1,'b':2}
  • 需要注意的其他要点:
  • 对象根据分类来共享对应的操作,如:字符串、列表和元组都共享诸如合并、长度和索引等序列操作。
  • 只有可变对象(列表、字典和集合)可以在原处修改。其他类型的对象不能在原处修改,如数字、字符串和元组。
  • 列表、字典和元组可以包含任何种类型的对象。
  • 列表和字典可以动态地扩大和缩小。
  • 没有限制的分片表达式能够复制序列。
  • 字典copy的方法能复制字典。
  • 有些内置函数能够生成拷贝。
  • copy标准库模块可以生成完整拷贝。
  • 其他许多情况都是引用。
  • "=="操作符测试值的相等性。
  • “is"表达式测试对象的一致性,即测试二者是否是同一个对象,是比”=="更严格的测试。
  • 数字通过大小进行比较。
  • 字符串是按照字典顺序,一个字符接一个字符地进行比较。
  • 列表和元组从左到右对每部分的内容进行比较。
  • 字典通过排序之后的(键、值)列表进行比较。
  • 数字混合类型比较再python3里面是错误的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值