Python 学习笔记 1

1. list 或tuple 的切片操作:

切片操作是指取list 或者tuple的其中某些元素,例如:

L = ['a','b','c','d','e','f' ]

取前三个元素:  L[0:3], 从索引 0 开始,直到索引 3, 注意这里不包含索引 3的元素,所以是 a, b, c  如果第一个索引是 0 还可以省略成 L[:3]

取第2和第3个元素:L[1:3]

取倒数第2个元素和倒数第1个元素:L[-2:] 注意倒数第1 个元素的索引是 -1

再例如:L = [0,1,2,3,4,5,6,7,8,9,10,11,12,13]

取前10个数,每 2 个取1个: L[0:10:2]     结果就是 0,2,4,6,8  可以看出,每x个取1个是取每x个中的第1个

 

同样,字符串也可以看成是一个list,也可以进行切片操作:

L ='ABCDEFG'

L[:3] = 'ABC'

2.迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)

例如迭代一个dict:

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
...     print(key)
...
a
c
b
注意这里打印的是key本身的值,不是key对应的value

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()

如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

3. 对象的一些操作方法:

.len__()判断对象长度:'ABC'.__len__() 3
.lower()转换成小写字符:'ABC'.lower() 'abc'
4. try   except finally 错误处理

类似于java 的try catch 语句

try:
程序写在这里
except Exception as e:
捕获错误后需要执行的程序写这里
finally:
无论是否有错误发生,都需要执行的程序写在这里


5.关于IO读写:

读文件:

使用带with 语句的IO操作,可以省略最后的close()语句,可以防止忘记close文件的情况:
with open('/path/to/file', 'r') as f:
    print(f.read())

另外,调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。

open()方法默认都是读取文本文件,且是UTF-8编码的文件,如果要读取二进制文件,比如图片,视频等,用 rb 模式打开文件即可:
>>> f = open('/Users/michael/test.jpg', 'rb')
>>> f.read()
....

如果要读取非UTF-8编码的文件,则需要给open()函数传入encoding参数,例如,读取GBK编码的文件:
>>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
>>> f.read()
'测试'

注意:对于windows系统,文件路径不能带反斜杠 \ , 因为在python里 \ 有转义的含义,例如 \n 代表换行,因此可以通过双反斜杠 \\ 或者替换为为正斜杠来解决:
C:\\Users\\charles\\123.txt 或者 C:/Users/charles/123.txt
也可以在path前面加一个 r , 表示不让转义生效,例如:
with open(r'C:/Users/charles/123.txt','r') as f:
s = f.read()
print(s)
 
posted @ 2020-04-14 15:24  钱_进  阅读(153)  评论(0编辑  收藏  举报