zoukankan      html  css  js  c++  java
  • python学习之内置函数(二)

    4.7.3 内置函数(2)

    int() str() bool() set() list():将一个可迭代对象转化为列表 tuple():将一个可迭代对象转换成元组

    dic(): 通过相应的方式创建字典

    print()输出到屏幕
    源码
    print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
        file:  默认是输出到屏幕,如果设置为文件句柄,输出到文件
        sep:   打印多个值之间的分隔符,默认为空格
        end:   每一次打印的结尾,默认为换行符
        flush: 立即把内容输出到流文件,不作缓存
    
    #示例
    print(1,2,3,4,sep= ',') #打印多个值之间的分隔符,默认为空格
    print(111,end='-')      #每一次打印的结尾,默认为换行符
    print(222)
    #输出
    1,2,3,4
    111-222
    
    abs()返回绝对值
    print(abs(-100))  #输出100
    
    sum()数字相加求和

    不支持元素嵌套类型的

    print(sum((1,2,3,4)))   # 输出 10
    print(sum((1,2,3),100))	# 输出 106
    print(sum(([1,2,3],2,3)))  
    # 输出报错 TypeError: unsupported operand type(s) for +: 'int' and 'list'
    
    min()最小值

    比较数值大小,比较的对象必须是同类型的元素

    print(min(1,2,3,4,5))	# 输出 1
    print(min([1,2,3,4]))	# 输出 1
    print(min((1,2,3,4),6,7))	#输出报错,不同元素类型不能比较大小
    #TypeError: '<' not supported between instances of 'int' and 'tuple'
    

    可以加key,灵活比较元素;加key是可以加函数名,min自动会获取传入函数中的参数的每个元素,然后通过你设定的返回值比较大小,返回最小的传入的那个参数。

    #当没有指定比较元素时,会默认比较第一个元素
    print(min((1,2,3,4),(6,7)))  #输出 (1,2,3,4)
    print(min((8,2,3,4),(6,7)))	 #输出 (6,7)
    
    #加key可以指定比较两个元组的第三个位置数值的大小
    print(min((8,2,3,4),(6,7,11),key=lambda x:x[2]))   #输出(8, 2, 3, 4)
    #还可以直接输出第三个位置上的最小值
    print(min((8,2,3,4),(6,7,11),key=lambda x:x[2])[2])  #输出3
    

    加key的练习

    # list = [
    #     {'name': 'alex', 'age': 73},
    #     {'name': 'wusir', 'age': 35},
    #     {'name': '太白', 'age': 25},
    # ]
    # # 将年龄最小的 字典返回。
     print(min(list,key=lambda x : x['age']))  #输出 {'name': '太白', 'age': 25}
    # # 将年龄最小的名字返回。
     print(min(list,key=lambda x : x['age'])['name'])  #输出  太白
    # # 将年龄最小的年龄返回。
     print(min(list,key=lambda x : x['age'])['age'])   #输出  25
    
    max()最大值

    用法语min一样

    bytes() 把字符串转换成bytes类型
    #把字符转成字节
    #方法一:
    s = '德玛'
    x = s.encode('utf-8')
    print(x)
    #输出   b'xe5xbexb7xe7x8ex9b'
    #方法二:
    print(bytes(s,encoding='utf-8'))
    
    #解码
    
    b = b'xe5xbexb7xe7x8ex9b'
    #方法一:
    print(b.decode('utf-8'))
    #方法二:使用str转换成字符串
    print(str(b,encoding='utf-8'))
    
    zip()拉链

    ​ zip()用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元祖组成的内容,如果各个迭代器的元素个数不一致,则按照长度最短的返回。

    l1 = [1,2,3,4]
    l2 = ['a','s','b']
    l3 = ('喝','汽','水','吧')
    print(zip(l1,l2,l3))  #返回的时一个迭代器的内存地址
    #输出<zip object at 0x000001D979C45308>
    
    print(list(zip(l1,l2,l3)))
    #输出[(1, 'a', '喝'), (2, 's', '汽'), (3, 'b', '水')]
    
    sorted()排序函数

    默认从小到大

    reverse = True表示从大到小排序

    普通版:

    对可迭代对象的每一个元素进行排序,以新的列表的形式输出

    print(sorted((4,2,3,4)))
    #输出  [2, 3, 4, 4]
    print(sorted('34231'))
    #输出  ['1', '2', '3', '3', '4']  
    

    带key版

    根据想要hi教的内容配合函数进行排序

    l1 = [('盖伦', 80), ('皇子', 75), ('女警', 7), ('赵信', 59)]
    #按照数字进行排序
    print(sorted(l1,key=lambda x:x[1]))
    #按照数字倒序排序
    print(sorted(l1,key=lambda x:x[1],reverse=True))
    
    # 字典排序返回的就是排序后的key
    dic = {1:'a',3:'c',2:'b'}
    print(sorted(dic))   
    

    sorted同样可以配合函数和lambda进行排序

    lst = [{'id':1,'name':'盖伦','age':22},
            {'id':2,'name':'皇子','age':25},
            {'id':3,'name':'赵信','age':23},]
    #按照年龄进行排序
    print(sorted(lst,key=lambda x:x['name']))
    
    filter()筛选过滤

    语法: filter(function,iterable)

    function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据

    iterable:可迭代对象

    filter()返回一个生成器

    lst = [{'id':1,'name':'盖伦','age':22},
            {'id':2,'name':'皇子','age':25},
            {'id':3,'name':'赵信','age':23},]
    #筛选年龄小于30的
    print(list(filter(lambda x:x['age']<30,lst)))
    #按步筛选
    ret = filter(lambda x:x['age']>20,lst)
    print(next(ret))
    print(next(ret))
    
    map()

    映射函数

    语法: map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别取执行function

    返回一个生成器,要用next触发map()

    # map 返回一个迭代器,相当于生成器表达式:循环模式
    l1 = [6,7,8,9]
    print([i**2 for i in l1])   #输出[36, 49, 64, 81]
    print(map(lambda x:x**2,l1))  #输出<map object at 0x0000019E654CD940>
    print(list(map(lambda x:x**2,l1)))  #输出[36, 49, 64, 81]
    
    
    计算两个列表中相同位置的数据的和
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    print(list(map(lambda x, y: x+y, lst1, lst2)))
    #输出[3, 6, 9, 12, 15]
    
    reduce

    ​ reduce的作用是先把列表中的前俩个元素取出计算出一个值然后临时保存着,接下来用这个临时保存的值和列表中第三个元素进行计算,求出一个新的值将最开始临时保存的值覆盖掉,然后在用这个新的临时值和列表中第四个元素计算,以此类推。

    ​ 在Python2.x版本中recude是直接 import就可以的, Python3.x版本中需要从functools这个包中导入

    python2中使用方法

    语法:reduce(函数名,可迭代对象)

    ret = reduce(func,[3,4,5,6,7])
    print(ret)   #输出25
    

    python3中使用

    from functools import reduce
    print(reduce(lambda x,y : x+y,[1,2,3,4]))  #输出10
    print(reduce(lambda x,y : 2*x+y,[1,2,3]))  #输出11
    print(reduce(lambda x,y :x+y,['a','b','c','s']))   #输出abcs
    

    仅供参考,欢迎指正
  • 相关阅读:
    Java转大数据开发全套视频资料
    Java注解Annotation的用法
    SpringBoot集成CAS单点登录,SSO单点登录,CAS单点登录(视频资料分享篇)
    零基础如何学习Java和web前端
    如何看待B站疑似源码泄漏的问题?
    如何自学编程,零基础适合学习Java或者Web前端吗,非科班的能学java吗?
    Spring中常用的注解,你知道几个呢?
    学习分布式系统需要怎样的知识?
    程序员如何学习互联网前言技术呢,我给你10个建议
    回看面试中的这些坑,你踩过几个?
  • 原文地址:https://www.cnblogs.com/jjzz1234/p/11069752.html
Copyright © 2011-2022 走看看