zoukankan      html  css  js  c++  java
  • day 16

    内置函数(二)

    reversed()  返回一个反向的迭代器

    k = [1,2,3,4,5]
    k.reverse()  #反转
    print(k)
    
    k = [1,2,3,4,5]
    k2 = reversed(k) #反向的迭代器
    print(k2)
    for i in k2:
        print(i)
    #返回结果 反序的迭代器 <list_reverseiterator object at 0x0000000000B8FBA8>
    #保留原列表,返回一个反向的迭代器

    slice()  切片(函数,不怎么用)

    l = (1,2,23,213,5612,342,43)
    sli = slice(1,5,2)
    print(l[sli])
    print(l[1:5:2])

    format()  格式化输出,它有很多功能

    print(format('test', '<20'))    #左对齐
    print(format('test', '>40'))    #右对齐
    print(format('test', '^40'))    #居中

    bytes()    转换为 bytes 类型

    # 我拿到的是gbk编码的,我想转成utf-8编码
    print(bytes('你好',encoding='GBK'))     # unicode 转换成GBK的 bytes 
    print(bytes('你好',encoding='GBK').decode('GBK')) #二进制又转为 GBK 
    print(bytes('你好',encoding='utf-8'))   # unicode 转换成 utf-8 的 bytes 
    #bytes 用途
    # 网络编程 只能传二进制
    # 照片和视频也是以二进制存储
    # html网页爬取到的也是编码

    bytearray()  是一个 byte 类型的数组

    b_array = bytearray('你好',encoding='utf-8')
    print(b_array)      #'xe4xbdxa0xe5xa5xbd'
    print(b_array[0])   #228

    ord()   字符按照 unicode 转数字

    print(ord(''))
    print(ord('1'))

    chr() 数字按照 unicode 转字符

    print(chr(97))

    ascii() 只要是 ascii 码中的内容 就打印出来,不是就转换成 u

    print(ascii(''))
    print(ascii('1'))

    repr()  用于百分号格式化输出

    name = 'egg'
    print('你好%r'%name)
    print(repr('1'))  #是什么就打印什么
    print(repr(1))

    all() 判断是否有 bool 值为 False 的值
    返回的值有有任意一个 False 整体就为 False

    print(all(['a','',123]))
    print(all(['a',123]))
    print(all([0,123]))

    any() 判断是否有 bool 值为 True 的值
    返回的值有有任意一个 True 整体就为 True

    print(any(['',True,0,[]]))

    很重要的四个内置函数 zip filter map sorted

    zip() 拉链方法 返回的是一个迭代器
    木桶短板原则来拉链

    l = [1,2,3,4,5]
    l2 = ['a','b','c','d']
    l3 = ('*','**',[1,2])
    d = {'k1':1,'k2':2}
    for i in zip(l,l2,l3,d):
        print(i)

    filter() 过滤

    filter() 函数接收一个函数 f 和一个 list,这个函数 f 的作用是对每个元素进行判断,返回 True 或 False,filter() 根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新 list

    def is_odd(x):
        return x % 2 == 1
    #返回奇数
    ret = filter(is_odd,[1,2,3,4,5,6,7,8,9])
    
    #像如下的列表推导式
    [i for i in [1,2,3,4,5,6,7,8,9] if x % 2 == 1] 
    
    print(ret) #可见这里返回的是一个迭代器
    
    for i in ret:
        print(i)
    
    
    #返回字符串
    def is_str(x):
        return type(x) == str
    
    ret = filter(is_str,[1, 'hello',[],'',None,6,7,'world',12,17]) #''也属于字符串
    
    for i in ret:
        print(i)
    #利用filter(),可以完成很多有用的功能 例如:删除 None 或者空字符串(不考虑 0 的问题)
    def is_not_empty(s):
        return s and len(str(s).strip()) > 0
        return s and str(s).strip()
    ret = filter(is_not_empty,[1,'hello',[],'',None,6,7,'world',12,17]) 
    
    for i in ret:
        print(i)
    
    
    #请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:
    #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    from math import sqrt #开平方
    def sqrts(s):
        ret = sqrt(s)
        return ret % 1 == 0  #除以一余零为整数
    ret = filter(sqrts,range(1,101))
    for i in ret:
        print(i)

    map 函数应用于每一个可迭代的项,返回的是一个结果 list。如果有其他的可迭代参数传进来,map 函数则会把每一个参数都以相应的处理函数进行迭代处理。map() 函数接收两个参数,一个是函数,一个是序列,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回

    ret = map(abs,[1,-4,6,-8])
    print(ret)
    for i in ret:
        print(i)

    filter 执行了 filter 之后的结果集合 <= 执行之前的个数
      filter 只管筛选,不会改变原来的值
    map 执行前后元素个数不变
      值可能发生改变


    sorted()  排序

    sorted 使用场景:列表数据不大,且还要保留原有列表顺序的时候
    因为 sorted 排序不改变原有列表 所以在内存空间就会有两个列表
    
    k = [1,-4,6,5,-10]  #从小到大进行排序
    k.sort(key = abs)   #sort 在原列表的基础上进行排序
    print(k)
    
    # reverse=True 从大到小排序 reverse=False 从小到大排序(默认)
    print(sorted(k,key=abs,reverse=True))  #sorted 生成了一个新列表 不改变原列表 占内存
    print(k)
    
    ##根据列表中每一个元素的长度进行排序
    h = ['   ',[1,2],'hello world']
    print(sorted(h,key=len))

    匿名函数

    带有 key 的五个函数,都可以和 lambda 函数组合
     min max filter map sorted —— lambda

    def add(x,y):
        return x+y
    print(add(10,20))
    
    #匿名函数组成部分(不允许换行)
    #函数名 = 匿名函数关键字 参,数 : 返回值(函数名是匿名函数赋值后才有的)
    add = lambda x,y:x+y
    print(add(1,2))
    
    #直接后面传递实参
    (lambda x,y: x if x> y else y)(101,102)
    
    #上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

    取出字典中 value 最大值对应的 key 值

    #用普通函数的写法
    dic={'k1':10,'k2':100,'k3':30}
    def func(key):
        return dic[key]
    print(max(dic,key=func))   #根据返回值判断最大值,返回值最大的那个参数是结果
    
    #匿名函数的写法 一行搞定
    print(max(dic,key=lambda k:dic[k]))
  • 相关阅读:
    lintcode:Flip Bits 将整数A转换为B
    lintcode:strStr 字符串查找
    lintcode:Subtree 子树
    lintcode 容易题:Partition Array by Odd and Even 奇偶分割数组
    lintcode:在二叉查找树中插入节点
    lintcode:在O(1)时间复杂度删除链表节点
    lintcode:哈希函数
    lintcode:合并排序数组 II
    lintcode:合并排序数组
    lintcode:数飞机
  • 原文地址:https://www.cnblogs.com/ysging/p/10094497.html
Copyright © 2011-2022 走看看