Python内置函数
map
map(处理逻辑,可遍历的对象) 处理序列中的每个元素,元素个数及位置与原来一样
1
2
|
v = "ALEX" print ( list ( map ( lambda x: x.lower(), v))) # 结果为 ['a', 'l', 'e', 'x'] |
更节省代码。
1
2
3
4
5
6
7
8
9
|
a = [] def jianer(array): for i in array: a.append(i.lower()) print (a) jianer(v) 结果 [ 'a' , 'l' , 'e' , 'x' ] |
filter
filter(处理逻辑,可遍历对象) 遍历序列中的每个元素,判断每个元素的布尔值为True则保留元素
1
2
3
4
5
6
7
8
9
|
movie_people = [ 'alex_sb' , 'wupeiqi_sb' , 'linhaifeng' , 'yuanhao_sb' ] def filter_test(array): ret = [] for i in array: if not i.endswith( 'sb' ): ret.append(i) return ret res = filter_test(movie_people) print (res)<br>结果<br>[ 'linhaifeng' ] |
1
2
|
movie_people = [ 'alex_sb' , 'wupeiqi_sb' , 'linhaifeng' , 'yuanhao_sb' ] print ( list ( filter ( lambda n: n.endswith( 'sb' ), movie_people))) # 判断元素endswith的值为True,为True则保留元素<br>结果<br>['alex_sb', 'wupeiqi_sb', 'yuanhao_sb']<br> |
reduce
from funtools import reduce
reduce(函数,序列,默认空参数) 处理一个序列,然后把序列进行合并操作
1 num_l = [1, 2, 3, 100] 2 res = 0 3 for num in num_l: 4 res += num 5 print(res) 6 7 8 def reduce_test(array): 9 res = 0 10 for num in array: 11 res += num 12 return res 13 14 ret = reduce_test(num_l) 15 print(ret) 16 17 结果都为106
1
2
3
4
5
|
from functools import reduce # reduce 用reduce函数要定义这句话 num_l = [ 1 , 2 , 3 , 100 ] print ( reduce ( lambda x, y: x + y, num_l, 1 )) print ( reduce ( lambda x, y: x + y, num_l)) |
其余内置函数总结
用法如下(缺少的待补充)
abs 取绝对值 参数可以是:负数、正数、浮点数或者长整形;只取绝对值,但是不会取整
print ( abs ( - 1 )) print ( abs ( 1 )) 结果 1 1 |
all 判断所有里面的元素是否为真值,如果有单个为空则返回True。参数为可迭代对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
>>> all ([ 'a' , 'b' , 'c' , 'd' ]) #列表list,元素都不为空或0 True >>> all ([ 'a' , 'b' , ' ', ' d']) #列表list,存在一个为空的元素 False >>> all ([ 0 , 1 , 2 , 3 ]) #列表list,存在一个为0的元素 False >>> all (( 'a' , 'b' , 'c' , 'd' )) #元组tuple,元素都不为空或0 True >>> all (( 'a' , 'b' , ' ', ' d')) #元组tuple,存在一个为空的元素 False >>> all (( 0 , 1 , 2 , 3 )) #元组tuple,存在一个为0的元素 False >>> all ([]) # 空列表 True >>> all (()) # 空元组 True |
any 有一个为真则为真,返回True
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
>>> any ([ 'a' , 'b' , 'c' , 'd' ]) #列表list,元素都不为空或0 True >>> any ([ 'a' , 'b' , ' ', ' d']) #列表list,存在一个为空的元素 True >>> any ([ 0 , ' ', False]) #列表list,元素全为0,' ',false False >>> any (( 'a' , 'b' , 'c' , 'd' )) #元组tuple,元素都不为空或0 True >>> any (( 'a' , 'b' , ' ', ' d')) #元组tuple,存在一个为空的元素 True >>> any (( 0 , ' ', False)) #元组tuple,元素全为0,' ',false False >>> any ([]) # 空列表 False >>> any (()) # 空元组 False |
bin 十进制转二进制
1
2
3
|
print ( bin ( 5 )) 0b101 # 0b表示二进制 |
hex 十进制转十六进制
1
2
3
|
print ( hex ( 74 )) 0x4a |
oct 十进制转八进制
1
2
3
|
print ( oct ( 18 )) 0o22 |
bool 判断布尔值
bytes 编码 ascll码不能编译中文,会报错
1
2
3
4
5
6
|
name = '你好' print (bytes(name,encoding = 'utf8' )) # 手动把字符串编码,转为二进制 print (bytes(name,encoding = 'utf8' ).decode( 'utf8' )) # 需要把字符串进行编码,再解码(用什么方式编码就用什么解码,decode) b '\xe4\xbd\xa0\xe5\xa5\xbd' 你好 |
dir 显示函数内置属性和方法
1
2
3
|
print ( dir ( dict )) [ '__class__' , '__contains__' , '__delattr__' , '__delitem__' , '__dir__' , '__doc__' , '__eq__' , '__format__' , '__ge__' , '__getattribute__' , '__getitem__' , '__gt__' , '__hash__' , '__init__' , '__iter__' , '__le__' , '__len__' , '__lt__' , '__ne__' , '__new__' , '__reduce__' , '__reduce_ex__' , '__repr__' , '__setattr__' , '__setitem__' , '__sizeof__' , '__str__' , '__subclasshook__' , 'clear' , 'copy' , 'fromkeys' , 'get' , 'items' , 'keys' , 'pop' , 'popitem' , 'setdefault' , 'update' , 'values' ] |
divmod 得到商和余数(可用作分页用)
1
2
3
|
print ( divmod ( 10 , 3 )) ( 3 , 1 ) |
eval 1、提取字符串的数据结构 2、作字符串中的数据运算
1
2
3
4
5
6
|
dic = { 'name' : 'alex' } #字典类型转成字符串 dic_str = str (dic) print (dic_str) d1 = eval (dic_str) #eval:把字符串中的数据结构给提取出来 print (d1) |
express = "1+2*(3/3-1)-2" print(eval(express)) 输出 -1,0 第二种数据运算
hash 可hash的数据类型即不可变数据类型,不可hash的数据类型即可变数据类型
hash的作用:从下载的软件判断是否被改变,通过对比hash值,便知道
help 查看函数的用法的详细信息
isinstance 判断类型
1
2
3
4
5
6
7
8
9
10
11
|
print ( isinstance ( 1 , int )) #判断是不是int类型 print ( isinstance ( 'abc' , str )) #判断字符串 print ( isinstance ([], list )) #判断列表 print ( isinstance ({}, dict )) #判断字典 print ( isinstance ({ 1 , 2 }, set )) #判断集合 True True True True True |
locals
def test(): age = "18" print(globals()) # 输出全局变量 print(locals()) # 输出上一层的变量 test() {'test': <function test at 0x000001C869BB9598>, '__file__': 'C:/Users/lenovo/PycharmProjects/untitled/pythons3/内置函数.py', '__spec__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001C869B56CF8>, '__builtins__': <module 'builtins' (built-in)>, '__package__': None, '__cached__': None, '__name__': '__main__', '__doc__': None} {'age': '18'}
max(最大)和min(最小) 遍历比较,不同类型间不能比较
list = [99,55,23,11,68] print(max(list)) print(min(list)) 99 11
age_dic={'alex_age':18,'wupei_age':20,'zsc_age':100,'lhf_age':30} print(max(age_dic.values())) # 取出最大年龄 print(max(age_dic)) # 默认比较key 100 zsc_age
1 age_max = [ 2 {"name":"alex","age":25}, 3 {"name":"tom","age":30}, 4 {"name":"tony","age":55} 5 ] 6 li = [] 7 for item in age_max: 8 li.append(item["age"]) 9 print(li) 10 age = {"alex":25,"tom":30,"tony":55} 11 print(max(li)) 12 max(age_max,key=lambda dic:dic["age"]) 13 print(max(age_max,key=lambda x:x["age"])) 14 15 [25, 30, 55] 16 55 17 {'name': 'tony', 'age': 55}
zip 一一对应分配
print(list(zip(('a', 'n', 'c'), (1, 2, 3)))) print(list(zip(('a', 'n', 'c'), (1, 2, 3, 4)))) print(list(zip(('a', 'n', 'c', 'd'), (1, 2, 3)))) [('a', 1), ('n', 2), ('c', 3)] [('a', 1), ('n', 2), ('c', 3)] [('a', 1), ('n', 2), ('c', 3)]
p={'name':'alex','age':18,'gender':'none'} print(list(zip(p.keys(),p.values()))) print(list(p.keys())) #取keys print(list(p.values())) #values print(list(zip(['a','b'],'12345'))) # zip传俩个参数,都是序列。便可一一对应 [('age', 18), ('gender', 'none'), ('name', 'alex')] ['age', 'gender', 'name'] [18, 'none', 'alex'] [('a', '1'), ('b', '2')]
max和zip结合使用
age = {"alex":25,"tom":30,"tony":55} print(list(zip(age.values(),age.keys()))) # 一一对应 print(max(zip(age.values(),age.keys()))) # 一一对应取最大值 [(55, 'tony'), (25, 'alex'), (30, 'tom')] (55, 'tony')
dic={'age1':18,'age2':10} print(max(dic)) # 比较的是key print(max(dic.values())) # 比较的是值,但是不知道对应的哪个key print(max(zip(dic.values(),dic.keys()))) # 通过zip,便可以获取到值最大,对应的是哪个key age2 18 (18, 'age1')
pow 几的几次方
print(pow(3,3)) print(pow(2,3,2)) 27 # 3**3 3的3次方 0 # 2**3%2 2的3次方取余
reversed 反转
li = [1,2,3,4] print(list(reversed(li))) # 反转 [4, 3, 2, 1]
round 四舍五入
print(round(4.3)) 4
set 变集合,记得集合的特性
print(set("hello")) {'o', 'l', 'h', 'e'}
slice 切片,可以指定步长
l='hello' s1=slice(3,5) # 切片 取3到5的元素 s2=slice(1,4,2) # 切片,指定步长为2 print(l[3:5]) print(l[s1]) # 切片 print(l[s2]) print(s2.start) # 开始 print(s2.stop) # 结束 print(s2.step) # 步长 lo lo el 1 4 2
sorted 排序(排序本质上就是在比较大小,不同类型间不能比较)
l=[3,2,1,5,7] l1=[3,2,'a',1,5,7] print(sorted(l)) # 排序 # print(sorted(l1)) # 会报错 [1, 2, 3, 5, 7]
people=[ {'name':'alex','age':1000}, {'name':'wupei','age':10000}, {'name':'yuanhao','age':9000}, {'name':'linhaifeng','age':18}, ] print(sorted(people,key=lambda dic:dic['age'])) # 按年龄进行排序 [{'name': 'linhaifeng', 'age': 18}, {'name': 'alex', 'age': 1000}, {'name': 'yuanhao', 'age': 9000}, {'name': 'wupei', 'age': 10000}]
name_dic={ 'abyuanhao': 11900, 'alex':1200, 'wupei':300, } print(sorted(name_dic)) #按key排序 print(sorted(name_dic,key=lambda key:name_dic[key])) # 取出字典的values排序 print(sorted(zip(name_dic.values(),name_dic.keys()))) # 按价格从低到高排序,并一一对应 ['abyuanhao', 'alex', 'wupei'] ['wupei', 'alex', 'abyuanhao'] [(300, 'wupei'), (1200, 'alex'), (11900, 'abyuanhao')]
sum 求和
1 li = [1,2,3,4] 2 print(sum(li)) 3 print(sum(range(101))) 4 5 10 6 5050
type 判断数据类型
msg = "123" if type(msg) is str: msg = int(msg) res = msg+1 print(res) 124
vars
里面如果没有参数,和locals用法相同
def test(): name = "病毒尖儿" print(locals()) print(vars()) test() {'name': '病毒尖儿'} {'name': '病毒尖儿'}
如果里面有一个参数,查看某一个方法,并显示成字典的类型
print(vars(int)) 内容过多,不再添加,以字典的形式表现
import 导入模块(就是导入一个py文件)
粗略用法,不能导入字符串类型(以后可能会这种需求)
1 # 1、先创建一个test.py的文件 2 写下一下内容 3 def say_hi(): 4 print("你好,林师傅") 5 # 如果想在别的地方调用这个模块(这个test.py文件) 6 7 import test 8 test.say_hi() 9 10 结果 11 12 你好,林师傅
__import__ 可以导入有字符串模块儿
粗略用法
1 # 1、先创建一个test.py的文件 2 写下一下内容 3 def say_hi(): 4 print("你好,林师傅") 5 # 如果想在别的地方调用这个模块(这个test.py文件) 6 7 module_name='test' 8 m=__import__(module_name) #有字符串的模块 9 m.say_hi() 10 11 结果 12 13 你好,林师傅
这里只是对模块粗略进行解释。未完,待续……