自学Python第六天- python 常用的内置函数、类及方法

自学Python第六天- python 常用的内置函数、类、方法及内置模块


python 用很多常用的比较有用的内置函数、类及方法(以下统称为方法或函数),这里做下分类总结

序列相关

此类方法常用于操作序列类型的数据

enumerate() 转换为枚举型

可以将一个可迭代对象转换为枚举型,即索引号和元素对应的类型

list_1 = [1, 3, 66, 96, 'ddd', ' ttg', 100]
enm = enumerate(list_1)
print(list(enm))		# 执行结果: [(0, 1), (1, 3), (2, 66), (3, 96), (4, 'ddd'), (5, ' ttg'), (6, 100)]

eval() 执行字符串表达式

eval(str) 是内置函数,作用是执行字符串 str 的表达式。例如:

>>>x = 7
>>>eval('3 * x')
21
>>>eval('2 + 2')
4

而 eval() 函数在python 中最常用的就是将一个字符串转为列表/字典/元组

a = "{1: 'a', 2: 'b'}"
b = eval(a)
print(type(b), b)	# 执行结果: <class 'dict'> {1: 'a', 2: 'b'}
c = '[[1,2], [3,4], [5,6], [7,8], [9,0]]'
d = eval(c)
print(type(d), d)	# 执行结果: <class 'list'> [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
e = "([1,2], [3,4], [5,6], [7,8], (9,0))"
f = eval(e)
print(type(f), f)	# 执行结果: <class 'tuple'> ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

即字符串是由哪种类型生成的,则转为哪种类型并执行。

需要注意的是,千万不要使用 eval 直接转换 input 的结果。因为 input 可能会被输入一些可指定的代码,例如删除文件之类的。

range() 生成整数列表

range() 函数将生成一个整数列表,其使用方法有两种:

  • range(stop) 生成一个从 0 到 stop (不含)的 range 对象型的整数列表
  • range(start, stop[, step]) 生成一个从 start 开始,到 stop (不含)的 range 对象型整数列表,可以按步进 step 生成

多用于辅助 for 循环

map() 映射

map(func,*interators) 可以将 *interator 中的元素依次经过 func 函数的处理,然后将返回值组合成一个新的对象。

list_1 = list('123456')
list_1 = list(map(int, list_1))
print(list_1)   # [1, 2, 3, 4, 5, 6]

zip() 打包

zip(*iterables) 将参数中的可迭代对象按照一一对应的方式进行打包。’

li_1, li_2 = ('name', 'age'), ('amy', 18)
print(dict(zip(li_1, li_2)))  # {'name': 'amy', 'age': 18}

filter() 过滤

filter() 用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元组组成的新 filter 对象型列表。使用方法:

  • filter(func, iterable) 参数 func 是过滤条件的自定义函数,iterable 是需要过滤的可迭代对象

函数将 iterable 对象的每个元素传入 func 进行判断,取返回值 True 的元素构建新的 filter 对象。

odd = filter(lambda n: n%2 == 1, range(1, 11))
print(list(odd))

slice() 切片

obj[slice(stop)]obj[slice(start, stop[, step])] ,可以将可切片的对象 obj 按照元素索引,从第 start 到 stop - 1 按照步长 step 的方式进行切片(取单个元素)并返回。可以用于 str / tuple / list 型。等同于切片模式 obj[start:stop:step]

str = 'hello world'
print(str[slice(2,7,2)])	# 执行结果: low
print(str[2:7:2])			# 执行结果: low

join() 加入

str.join(*args) 将若干字符串或字符串序列 args 的元素以字符串 str 连接,返回一个新的字符串

list_1 = ['11', '22', '33', '44']
j = "- -".join(list_1)
print(j)		# 执行结果: 11- -22- -33- -44

str 的一些方法

也可用于 list ,部分可用于 tuple

str.find(str)|返回该元素最小的索引,如果没有则返回-1

str.rfind(str) 同 str.find() 只是从右边开始找

str.replace(old,new[,count])|将old字符替换为new字符,重复count次,无count则是全部替换

str.split(seq=None)|以seq分割字符串,返回列表(数组)。默认值为None,以空格分割

str.startswith(prefix[,start[,end]])|判断字符串是否以前缀开始,返回bool值

str.endswith(suffix[,start[,end]])|判断字符串是否以尾缀结束,返回bool值

str.lower()|字符串全部转为小写

str.upper()|字符串全部转为大写

str.swapcase() 反转大小写

str.strip([chars])|去掉字符串左右的字符,默认为空格

str.lstrip 去掉左边一个空格

str.rstrip 去掉右边一个空格

str.isdigit()|判断字符串是否全为数字,返回bool值

str.isalpha()|判断字符串是否全为字母,返回bool值

str.isalnum()|判断字符串是否全为数字或字母(不存在特殊字符),返回bool值

str.islower() 判断字符串是否全小写

str.isupper() 判断字符串是否全大写

str.isnumeric() 判断字符串是否全数字字符(汉字数字也算)

str.isdecimal() 判断字符串是否只有十进制字符

del()

len() 返回列表的长度

max() 返回列表所有元素中值最大的一个

min() 返回列表所有元素中值最小的一个

reversed()sorted() (反转和排序)

list 的一些方法

部分可用于 str / tuple

list.remove() 删除元素

list.pop() 弹出索引的元素,默认最后一个

list.reverse() 将列表自身逆序

list.sort() 将列表升序排序 key = abs (key是规则,可以使用函数)

默认升序排序,是操作在原数据上。
list.sort([reverse = 0 or 1]) reverse 为1(True)降序,为0(False)升序,默认0
list.sort([key=func]) 按照 func 函数返回的关键字进行排序

list.append() 将参数对象作为元素添加至列表结尾

list.extend() 将序列对象的元素逐个添加至列表结尾

list.insert() 将参数对象插入到列表的参数索引处

list.count() 返回参数元素在列表中出现的次数

set 的一些方法

set.add(element) 添加

set.update(object) 更新

x.difference(y) 返回差集,即元素包含在 x ,但不包含在 y

x.difference_update(y) 和 difference 类似,但是不返回值,而是将差集覆盖 x

x.intersection(y) 返回交集,即又包含在 x 又包含在 y

x.intersection_update(y) 使用交集更新覆盖 x

x.isdisjoint(y) 判断 x 和 y 是否有相同的元素。有则返回 False ,没有则返回 True

x.issubset(y) 判断 x 是否全部包含在 y 中,即是 y 的子集

x.issuperset(y) 判断 x 是否是 y 的父集

set.discard() 删除指定元素,和 remove() 方法区别是如果需要删除的元素不存在,remove() 会报错,discard() 不会报错

dict 的一些方法

dict.get(key[,default]) 返回指定键的值,如果值不在字典中,则返回 default 值

dict.setdefault(key,default=None) 和 get() 方法类似,但如果不存在则添加键并将值设为 default

dict.update(dict2) 将字典 dict2 的键值对更新到 dict 中。

dict.items() 以列表返回可历遍的 (键,值)元组对

dict.keys() 以列表返回字典所有的键

dict.values() 以列表返回字典所有的值

dict.fromkeys(iterable[,value]) 返回一个字典,其 key 为 iterable 内的元素,value 默认值为 None(经测试和变量 dict 无关)

数值相关

此类方法多用于数值处理、计算等

math 模块

提供标准运算函数的标准库

math.ceil() 向上取整

math.floor() 向下取整

math.pow() 取幂次

random() 模块

randon 模块常用来取随机值

random.choice(seq) 从序列 seq 中随机取一个元素并返回。

random.randrange([start,]stop[,step]) 在从 start 到 stop -1 的范围内,以步长 step 的形式获取集合并从中返回一个随机数

random.randint(a,b) 在从 a 到 b 的整数区间内取一个随机数

random.random() 随机生成一个实数,范围在 [0 , 1) 之间。

random.shuffle(list) 将列表 list 随机打乱,没有返回值

random.uniform(x,y) 随机生成一个实数,范围在 [x , y] 之间

decimal 模块

用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算

round() 四舍六入五单双(四舍六入五成偶)

abs() 取绝对值

reduce() 缩减

reduce() 函数是内置模块 functools 的函数,使用时需要导入,其使用方法:

  • reduce(func, iterable) 将 iterable 内的元素按照 func 的需要传入并处理,然后将返回值作为新的 func 参数联合 iterable 内剩余的元素依次传入 func 进行处理,直到 iterable 内所有的元素均处理完成。

reduce() 可以把多个参数合并操作,也就是从多个条件简化得出结果,例:

from functools import reduce
def multi(x, y):
	return x * y
reduce(multi, range(1,4))	# 相当于 ((1*2)*3)
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) # 相当于 ((((1+2)+3)+4)+5)

需注意的是,每次只能传递和处理2个参数(包含返回值)。

文件操作

open() 创建或打开文件

open(filename[,mode,encoding]) 返回创建或打开的文件对象。filename 是文件名,mode 是打开方式 ,encoding 是编码格式,默认为 gbk。文件类型分为文本文件二进制文件

file = open('a.txt','r')
print(file.readlines())
file.close()

参数 mode 的内容:

  • r :以只读模式打开文件。指针在文件开始
  • w :以只写模式打开文件,如文件不存在则创建,如存在则覆写。指针在文件开头
  • a :以追加模式打开文件,如文件不存在则创建,如存在则在末尾追加内容。指针在原文件末尾
  • b :以二进制方式打开文件,不能单独使用,需与其他模式一起使用,如 rb 或 wb 等
  • + :以读写模式打开文件,不能单独使用,需与其他模式一起使用,如 a+ 等
file = open('b.txt','w')
file.write('你好,中国!')
file.close()

file 对象的常用方法

方法描述
file.close()将缓冲区的内容写入文件并关闭
file.flush()将缓冲区的内容写入文件,不关闭
file.read([size])从文件读取指定的字节数,如未给定或负数则读取所有
file.readline([size])读取整行,包含 \n 字符。如指定非负参数,则返回指定大小的字节数
file.readlines读取所有行直到结束,并返回列表
file.seek(offset[,whence])移动指针到指定位置,offset 为偏移量,whence 默认值为0从头开始,为1从当前位置,为2从文件末尾开始
file.tell()返回指针当前位置
file.write(str)向文件写入指定字符串(如果文件以 wb 方式打开,写入的字符串要用 b’str’ 形式。
file.writelines(seq)向文件写入序列的字符串

文件对象的常用方法

文件对象有以下的常用方法

  • read([size]) :从文件中读取 size 个字节或字符的内容并返回。若省略参数则读取所有内容。
  • readline() :从文本文件中读取一行内容。
  • readlines() :把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回。
  • write(str) :将字符串 str 内容写入文件,也可以写入二进制流。
  • writelines(s_list) :将字符串列表 s_list 写入文本文件,不添加换行符。
  • seek(offset[,whence]) :把文件指针移动到新的位置,offset 表示相对于 whence 的位置。 offset 为正则往后移动,为负往前移动。whence 为0表示从头开始计算(默认值),为1表示从当前位置开始计算,为2表示从文件尾开始计算。
  • tell() :返回文件指针的当前位置。
  • flush() :把缓冲区的内容写入文件,但不关闭文件。
  • close() :把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源。

OS 模块

  • os.system(app) :执行系统注册的文件,相当于在运行对话框内直接输入应用文件名
  • os.startfile(path) :执行 path 路径指向的可执行文件
  • os.getcwd() :返回当前的工作目录
  • os.listdir(path) :返回指定路径下的文件和目录信息
  • os.mkdir(path[,mode]) :创建目录(Dos 命令里的 md)
  • os.makedirs(path1/path2...[,mode]) :创建多级目录
  • os.rmdir(paht) :删除目录(Dos 命令里的 rd)
  • os.removedirs(paht1/path2......) :删除多级目录
  • os.chdir(paht) :将 path 设为当前工作目录(Dos 命令里的 cd)

OS.path 模块

  • os.path.abspath(path) :用于获取文件或目录的绝对路径
  • os.path.exists(path) :用于判断文件或目录是否存在,返回 bool 值
  • os.path.join(path,name) :将目录与目录或文件名拼接起来
  • os.path.splitext() :分离文件名和扩展名
  • os.path.split() :分离路径和文件名
  • os.path.basename(path) :从一个目录中提取文件名
  • os.path.dirname(paht) :从一个路径中提取文件路径,不包括文件名
  • os.path.isdir(paht) :用于判断是否为路径

其他工具

sys 模块

提供与 python 解释器及环境操作相关的标准库

sys.getsizeof() 获取占用内存大小

sys.getsizeof(obj) 可以获取参数对象所占内存的大小

import sys
print(sys.getsizeof(45))		# 28
print(sys.getsizeof(True))		# 28
print(sys.getsizeof('45'))		# 51
print(sys.getsizeof(sys))		# 72

os 模块

提供访问操作系统服务功能的标准库

calendar 模块

提供与日期相关的各种函数的标准库

urllib 包

用于读取来自网络(服务器)的数据的标准库

urllib.request.urlopen() 对一个网址进行请求

urllib.request.urlopen(url) 对网站发送请求,并返回一个 http.client.HTTPResponse 对象。可以使用 .read() 读取其内容。

time 模块

提供与时间相关的各种函数的标准库

time.time() 获取当前时间

time.time() 返回从 1970年1月1日零时开始计时到现在经历的秒数。

time.localtime() 将秒时间转换成本地时间

time.localtime(second) 将一个从1970年1月1日零时开始计时的秒数转换成本地时间,以 time.struct_time 类型(时间元组)返回。如果没有参数则默认取当前时间。

time.asctime() 将时间元组转成可读取的时间,默认当前时间

time.strftime() 格式化日期

print(time.strftime('%y-%m-%d %H:%M:%S',time.localtime()))	# 参数2可以省略,默认当前时间

日期格式化符号:

符号描述
%y2位数的年(0-99)
%Y4位数的年(0000-9999)
%m月份(01-12)
#d日(0-31)
%H24小时制小时数(0-23)
%I12小时制小时数(01-12)
%M分钟数(00-59)
%S秒(00-59)
%a简化星期几名称(英文)
%A完整星期几名称(英文)
%b简化月份名称(英文)
%B完整月份名称(英文)
%c本地日期时间表示(英文)
%j年内的某天(001-366)
%p本地 AM 或 PM
%U星期数(00-53),周日为星期开始
%w星期几(0-6),周日为星期开始
%W星期数(00-53),周一为星期开始

time.mktime() 接收时间元组并返回时间戳

time.sleep(secs) 推迟调用线程的运行 secs 秒

time.strptime(str,format=‘%a %b %d %H:%M:%S %Y’) 根据 format 的格式把一个时间字符串解析为时间元组

datetime 模块

datetime 模块下的 datetime 能够使用属性快速的获取需要的时间属性。例如 datetime.year / datetime.hour / datetime.tzinfo 等

datetime.datetime(year,month,day,hour,minute,second,mircosecond) 指定时间,返回 datetime 对象

datetime.datetime.today() 返回当前时间为 datetime 对象

datetime.datetime.fromtimestamp(timeobj) 将时间戳转为 datetime 对象

datetime_obj.timestamp() 把 datetime 类型的 datetime_obj 对象转为时间戳

datetime.datetime.strptime(timestr,‘北京时间:%Y/%m/%d %H:%M:%S’) 将字符串按照格式转化为datetime 对象,需注意的是参数格式必须和字符串格式一致

datetime_obj.date() 获取 datetime 对象对应的 date 对象

datetime_obj.time() 获取 datetime 对象对应的 time 对象

datetime_obj.weekday() 获取周几,从周一 = 0 开始

datetime_obj.isoweekday() 获取周几,从周一 = 1 开始

datetime_obj.strftime(format) 以 format 格式返回时间字符串

calendar 模块

calendar 模块可用来打印日历。

import calendar
cal = calendar.month(2019,10)
print(cal)
# 执行结果:
#     October 2019
# Mo Tu We Th Fr Sa Su
#     1  2  3  4  5  6
#  7  8  9 10 11 12 13
# 14 15 16 17 18 19 20
# 21 22 23 24 25 26 27
# 28 29 30 31

calendar.isleap(year) 判断 year 年是否是闰年

calendar.leapdays(y1,y2) 返回 y1, y2 两个年份之间的闰年总数

json 模块

用于使用 JSON 序列化好反序列化对象

re 模块

用于在字符串中执行正则表达式匹配和替换

logging 模块

提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值