常见内置函数

常见内置函数

1.map()  映射

l = [1,2,3,4]
map(lambda x:x+1,l)  # 循环获取列表中每个元素并传递给匿名函数保存返回值

 

2.zip()  拉链

l = [11, 22, 33, 44, 55, 66, 77]
name_list = ['jason', 'kevin', 'tony', 'jerry']
l1 = [1, 2, 3, 4, 5, 6, 7]
l2 = [8, 7, 6, 4, 3, 2, 1]

new_list = []
for i in range(len(l)):
    new_list.append((l[i],name_list[i]))
print(new_list)

res = zip(l, name_list, l1, l2)
print(list(res))

 

3.max()与min()  求最大值 ,求最小值

l = [11, 22, 33, 44, 55, 66, 77]
print(max(l))
print(min(l))

d = {
    'jason':3000,
    'Bevin':1000000,
    'Ascar':10000000000,
    'aerry':88888
  }
def index(key):
    return d[key]
print(max(d,key=lambda key:d[key]))  # for循环先取值 之后再比较大小
"""
A-Z  65-90
a-z  97-122
"""
print(min(d,key=lambda key:d[key]))  # jason

 

4.filter()  过滤

l = [11, 22, 33, 44, 55]
res = filter(lambda x: x > 30, l)
print(list(res))  # [33, 44, 55]

 

5.reduce()  归总

from functools import reduce
d = [11, 22, 33, 44, 55, 66, 77, 88, 99]
res = reduce(lambda x, y: x + y, d)
res1 = reduce(lambda x, y: x + y, d, 100)  # 还可以额外添加元素值
print(res)

 

6.abs()  绝对值

print(abs(123))  # 123
print(abs(-123))  # 123

 

7.all()  any()

l = [11,22,33,0]
print(all(l))  # 所有的元素都为True结果才是True
print(any(l))  # 所有的元素只要有一个为True结果就为True

 

8.bin() oct() hex()  进制数

print(bin(123))
print(oct(123))
print(hex(123))

 

9.bytes() str() 转化二进制,字符串

res = '金牌班 最牛逼'
res1 = bytes(res,'utf8')
print(res1)
res2 = str(res1,'utf8')
print(res2)
res1 = res.encode('utf8')
print(res1)
res2 = res1.decode('utf8')
print(res2)

 

10.callable()  是否可调用(能不能加括号运行)

s1 = 'jason'
def index():
    pass
print(callable(s1),callable(index))  # False True

 

11.chr()  ord() 根据ASCII码转数字找字符

print(chr(65))  # 根据ASCII码转数字找字符
print(ord('A'))  # 65

 

12.complex()  复数

print(complex(123))  # (123+0j)

 

13.dir()  查看当前对象可以调用的名字

def index():
    pass
print(dir(index))
print(index.__name__)

 

14.divmod() 取余

print(divmod(101,10))
"""总数据100 每页10条  10页"""
"""总数据99  每页10条  10页"""
"""总数据101 每页10条  11页"""
num,more = divmod(233,10)
if more:
    num += 1
print('总共需要%s页'%num)

 

15.eval()只能识别简单的语法  exec()可以识别复杂语法  都是将字符串中的数据内容加载并执行

res = """
      你好啊
      for i in range(10):
          print(i)
      """
res = """
      print('hello world')
      """
eval(res)
exec(res)                    

 

16.isinstance()  判断是否属于某个数据类型

print(isinstance(123,float))  # False
print(isinstance(123,int))  # True

 

17.pow() 幂

print(pow(4,3))

 

18.round() 四舍五入

print(round(4.8))  # 5
print(round(4.6))  # 5
print(round(8.5))  # 8
# 五舍六入

 

19.sum() 求和

l = [11,22,333,44,55,66]
print(sum(l))

 

闭包函数

  闭:定义在函数内部的函数
  包:内部函数使用了外部函数名称空间中的名字
    # 只有符合上述两个特征的函数才可以称之为"闭包函数"

def outer():
    x = 222
    def index():
        print('from index', x)
    return index

# 闭包函数其实是给函数传参的第二种方式
# 方式1:函数体代码需要用到数据 直接在括号内定义形参即可
def index(username):
    print(username)
def my_max(a, b):
    if a > b:
        return a
    return b
# 方式2:利用闭包函数
def outer(x,y):
    # x = 2
    # y = 40
    def my_max():
        if x > y:
            return x
        return y
    return my_max
res = outer(2,40)
print(res())
print(res())

import requests
url = 'https://www.baidu.com'
def outer(url):
    def get_content():
        # 爬取百度首页数据
        res = requests.get(url)
        if res.status_code == 200:
            with open(r'xxx.html','wb') as f:
                print('*'.center(30))
                f.write(res.content)
    return get_content

res = outer('https://www.baidu.com')
res()
res()
res()
res1 = outer('https://www.jd.com')
res1()
res1()
res1()
res1()

 

递归函数

  递归:函数在运行过程中 直接或者间接的调用了自身

 

  官网表示:python默认的最大递归深度为1000次

  import sys

  print(sys.getrecursionlimit())

  print(sys.setrecursionlimit(2000))

count = 1
def index():
    global count
    count += 1
    print(count)
    print('from index')
    index()
index()



def func():
    print('from func')
    index()
def index():
    print('from index')
    func()
index()

 

  递归     

    1.递推
      一层层往下推导答案(每次递归之后复制度相较于上一次一定要有所下降)
    2.回溯
      依据最后的结论往后推导出最初需要的答案
      递归一定要有结束条件!!!

# 伪代码:可能无法运行 但是可以表述逻辑
# age(5) = age(4) + 2
# age(4) = age(3) + 2
# age(3) = age(2) + 2
# age(2) = age(1) + 2
# age(1) = 18

def get_age(n):
    if n == 1:
        return 18
    return get_age(n - 1) + 2
print(get_age(5))

 

  小练习

    l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,]]]]]]]]]]]]]]
    # 打印出列表中每一个元素(列表除外)
    1.循环该列表 获取列表内每一个元素
    2.判断该元素是否是数字 如果是数字 则直接打印
    3.如果是列表 则循环该列表 获取列表内每一个元素
    4.判断该元素是否是数字 如果是数字 则直接打印
    5.如果是列表 则循环该列表 获取列表内每一个元素
    6.判断该元素是否是数字 如果是数字 则直接打印
    7.如果是列表 则循环该列表 获取列表内每一个元素

l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,]]]]]]]]]]]]]]
# 方式一
def get_num(l):
    for i in l:
        if type(i) is int:
            print(i)
        else:
            # 也是for循环 然后判断
            get_num(i)
get_num(l)

# 方式二
def num(l):
    print(l[0])
    # print(l)
    if len(l) < 2:
        return
    else:
        l2 = l[1]
        num(l2)
num(l)


for i in []:
    print(i,'懵逼了!')

 

匿名函数

  没有名字的函数
  
  语法格式
    lambda 形参:返回值

print(lambda x:x**2)
def index():
    pass
print(index)
print((lambda x: x ** 2)(2))
res = lambda x: x ** 2
print(res(2))

'''匿名函数一般不会单独使用 都是配合其他函数一起使用'''
# map()  映射
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def index(n):
    return n ** 2
print(list(map(lambda x:x**2, l)))

 

待续

posted @ 2021-11-22 16:47  Snails蜗牛  阅读(93)  评论(0编辑  收藏  举报