python学习之内置函数(day11)

map

map(处理逻辑,可遍历的对象)   处理序列中的每个元素,元素个数及位置与原来一样

v = "ALEX"        
print(list(map(lambda x: x.lower(), v)))     
>>>['a', 'l', 'e', 'x']

原理

a = []
def jianer(array):
    for i in array:
        a.append(i.lower())
    print(a)
jianer(v)
 

>>>['a', 'l', 'e', 'x']
View Code

filter

filter(处理逻辑,可遍历对象) 遍历序列中的每个元素,判断每个元素的布尔值为True则保留元素

movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']
print(list(filter(lambda n: n.endswith('sb'), movie_people)))    
# 判断元素endswith的值为True,为True则保留元素
>>>['alex_sb', 'wupeiqi_sb', 'yuanhao_sb']

原理

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)
>>>['linhaifeng']
View Code

reduce

使用前导入模块:from funtools import reduce

reduce(函数,序列,默认空参数) 处理一个序列,然后把序列进行合并操作

from functools import 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))

原理

num_l = [1, 2, 3, 100]
res = 0
for num in num_l:
    res += num
print(res)


def reduce_test(array):
    res = 0
    for num in array:
        res += num
    return res

ret = reduce_test(num_l)
print(ret)

>>>106
>>>106
View Code

abs取绝对值  参数可以是:负数、正数、浮点数或者长整形;只取绝对值,但是不会取整

print(abs(-1))
print(abs(1))
>>>1
>>>1
View Code

all判断所有里面的元素是否为真值,如果有单个为空则返回True。参数为可迭代对象

>>> 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
View Code

any有一个为真则为真,返回True

>>> 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
View Code

bin十进制转二进制 hex十进制转十六进制 oct十进制转八进制

print(bin(5))
>>>0b101        # 0b表示二进制

print(hex(74))
>>>0x4a

print(oct(18))
>>>0o22
View Code

bool判断布尔值

bytes编码  ascll码不能编译中文,会报错

name = '你好'
print(bytes(name,encoding='utf8'))                # 手动把字符串编码,转为二进制
print(bytes(name,encoding='utf8').decode('utf8')) # 需要把字符串进行编码,再解码(用什么方式编码就用什么解码,decode)
 
>>>b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>>你好
View Code

dir显示函数内置属性和方法

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']
View Code

divmod得到商和余数(可用作分页用)

print(divmod(10,3))
>>>(3,1)
View Code

eval1、提取字符串的数据结构 2、作字符串中的数据运算

dic={'name':'alex'}  #字典类型转成字符串
dic_str=str(dic)
print(dic_str)
>>>"{'name':'alex'}"
d1=eval(dic_str)     #eval:把字符串中的数据结构给提取出来
print(d1)
>>>{'name':'alex'}
View Code
express = "1+2*(3/3-1)-2"
print(eval(express))
>>>-1.0
View Code

hash一种运算方法,将代码算成一串数字。可hash的数据类型即不可变数据类型,不可hash的数据类型即可变数据类型

hash的作用:从下载的软件判断是否被改变,通过对比hash值,便知道(防止下载木马)

help查看函数的用法的详细信息

isinstance判断类型

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
View Code

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'}
View Code

max(最大)和min(最小) 遍历比较,不同类型间不能比较。比较:每个元素一对一比较,如果有结果后续不比较。b14>a17

list = [99,55,23,11,68]
print(max(list))
print(min(list))
>>>99
>>>11
View Code
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
View Code

高级用法

age_max = [
        {"name":"alex","age":25},
        {"name":"tom","age":30},
        {"name":"tony","age":55}
]
li = []
for item in age_max:
    li.append(item["age"])
print(li)
age = {"alex":25,"tom":30,"tony":55}
print(max(li))
max(age_max,key=lambda dic:dic["age"])
print(max(age_max,key=lambda x:x["age"]))

>>>[25, 30, 55]
>>>55
>>>{'name': 'tony', 'age': 55}
View Code

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)]
View Code
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')]
View Code

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')
View Code
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, 'age1')
View Code

pow 几的几次方

print(pow(3,3))
print(pow(2,3,2))
>>>27          # 3**3   3的3次方
>>>0           # 2**3%2 2的3次方取余
View Code

reversed反转

li = [1,2,3,4]
print(list(reversed(li)))     # 反转
>>>[4, 3, 2, 1]     
View Code

round四舍五入

print(round(4.3))
>>>4
View Code

set  变集合,记得集合的特性

print(set("hello"))
>>>{'o', 'l', 'h', 'e'}
View Code

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
4
View Code

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]
 
View Code

比较年龄

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}]
View Code

高级用法

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')]
View Code

sum 求和

li = [1,2,3,4]
print(sum(li))
print(sum(range(101)))

10
5050
View Code

type 判断数据类型

msg = "123"
if type(msg) is str:
    msg = int(msg)
    res = msg+1
    print(res)
View Code

import 导入模块(就是导入一个py文件) 粗略用法,不能导入字符串类型(以后可能会这种需求)

# 1、先创建一个test.py的文件
        写下一下内容
                def say_hi():
                    print("你好,林师傅")
# 如果想在别的地方调用这个模块(这个test.py文件)

import test
test.say_hi()
>>>你好,林师傅
View Code

__import__ 可以导入有字符串模块儿

# 1、先创建一个test.py的文件
        写下一下内容
                def say_hi():
                    print("你好,林师傅")
# 如果想在别的地方调用这个模块(这个test.py文件)

module_name='test'
m=__import__(module_name)   #有字符串的模块
m.say_hi()

>>>你好,林师傅
View Code

 

posted @ 2019-06-08 21:56  大黑仔  阅读(145)  评论(0编辑  收藏  举报