Python 简明手册
- 2019 年 10 月 10 日
- 笔记
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40313634/article/details/92848766
数据馆员的 Python 简明手册
1. hello world
#!/usr/bin/env python #-*- coding:utf-8 -*- __author__ = 'zuoy' __doc__ = '在屏幕上打印信息: hello world!' def main(): ''' 入参:无 功能:在屏幕上打印信息: hello world! ''' print('hello world!') if __name__ == '__main__': main()
2. 数据类型
string
- 字符串分割
s.split(str, num) # 默认按照空白符分割所有;str: 分割符, num: 分割成几份
- 大小写转化
s.upper() s.lower()
- 字符串拼接
'a' + 'b' == 'ab' 2 * 'a' == 'aa' '_'.join(['one', 'book']) == 'one_book'
- 字符、编码转换
ord(c) chr(97)
- strip() # 删除行首行尾的空白字符
- s.find(’.’) # 从左向右查找
- s.refind(’.’) # 从右向左查找
list
- 遍历list
for num in l:
- 求长度
len(l)
- 删除list、list元素(与字典删除操作同方法)
l.pop(index) l.remove(x)
- 添加元素
l.append(x) # 末尾添加 l.insert(index) # 指定下标处添加元素
- 查找元素
l.index(x) # 有x,返回x的下标;没有,报异常
- 切片:list、str等
nl = l[start_index : end_index+1 : step]
- 列表生成式
nl = [m + n for m in 'ABC' for n in 'XYZ']
- 排序
l.sort(k=f) # 返回值是:None nl = sorted(l, key=abs, reverse=True) # 按照绝对值排序,反序;key=str.lower 忽略大小写排序
- 压缩
l3 = zip(l1, l2) for x, y in l3:
- 高阶函数
map(f, l # [f(l[0]), f(l[1]), ...] reduce(f, []1,2,3) # = f((1,2), 3) # from functools import reduce filter(is_odd, l) # 返回迭代器:如果is_odd(l[i])为真,则在迭代器里保留该元素
字典
- 遍历字典
for k in d: for v in d.values() for k, v in d.items()
- 删除dict、dict元素(与list删除操作同方法)
d.remove(k) del d[k] del d
- 判断 key 是否存在
if k in d: if d.get(k, None) != None: # key 不存在时返回None(设置的值)
- list 转字典
d.fromkeys(s, t)
set
字典的key集合,不重
- 添加、删除元素
d.add(k) d.remove(k)
- 求和(去重的)
d1 + d2 d1 | d2 # d1 & d2 # 求交集(共同元素)
枚举类型
from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) print(Month.Feb) == Month.Feb from enum import Enum, unique @unique # 检查有无重复值 class Weekday(Enum): Sun = 0 # Sun的value被设定为0 Mon = 1 Tue = 2 Weekday.Mon == Weekday.Mon Weekday.Tue.value == 2
逻辑运算符
- andornot
x and y # xy 均为真,返回y的值;否则,返回False x or y # x 为真,返回x; 否则,返回y not x # 返回True或False
常用方法
- 判断元素类型
isinstance(x, int) # 子类和父类是同一种元素 type(x) == int # 子类和父类不是同一种元素
- 范围
range(s, e, step) # [s, e)
- 文件读取
with open(file, encoding='utf-8', 'r') as f: f.read() # 读取整个文件的内容 f.readlines() # 读取整个文件所有行的内容, 返回list f.readline() # 读取一行内容 f.read(n) # 读取n 字节的内容
pickle.dump(strs, outfile) # 序列化,二进制数据处理 strrs = pickle.load(infile)
- os 模块
os.path.abspath('.') # 查看当前路径的绝对路径 os.path.join('/Users', 'testdir') # 路径拼接 os.mkdir('/Users') # 创建路径 os.rmdir('/Users') # 删除文件夹 os.path.splitext('/path/to/file.txt') # (’/path/to/file’, ‘.txt’) os.path.split('/Users/michael/testdir/file.txt') # (’/Users/michael/testdir’, ‘file.txt’) os.rename('test.txt', 'test.py') os.remove('test.py') # 删除文件 os.listdir('.') # 列出当前路径下的所有文件 os.path.isdir(x) # 路径存在 os.path.isfile(x) # 文件存在
注意
除法
10 / 3 == 3 # 结果是浮点数 // # 结果向下取整 10 // 3 == 3 -10 / 3 == -4
取整
int(8.6) == 8 round(8.64) == 9 round(8.5) == 8 round(9.5) == 10 # .5 取最接近的偶数