zoukankan      html  css  js  c++  java
  • 推推导式和内置函数

    列表推导式:

    [ 变量(加工后的变量) for  变量i  in 可迭代的数据类型 ]

    l1 = [i for i in range(1,11)]
    print(l1)
    #输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    #例一:30以内所有能被3整除的数
    l3 = [i for i in range(31) if i % 3 == 0]
    print(l3)
    #输出:[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
    ------------------------------------------------------------
    #例二:30以内所有能被3整除的数的平方
    l4 = [i**2 for i in range(31) if i % 3 == 0]
    print(l4)
    #输出:[0, 9, 36, 81, 144, 225, 324, 441, 576, 729, 900]

    集合推导式,自带去重功能:

    squared = {x**2 for x in [1, -1, 2]}
    print(squared)
    #输出:{1, 4}    由于在集合里,所以重复自动去掉

    字典推导式:

    #例一:将一个字典的key和value对调
    mcase = {'a': 10, 'b': 34}
    mcase_frequency = {mcase[k]: k for k in mcase}
    print(mcase_frequency)
    #输出:{10: 'a', 34: 'b'}

    列表套列表推导式:

    #打印含有两个e的名字
    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
             ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    
    name_l1 = [name for i in names for name in i if name.count('e') == 2]
    print(name_l1)
    #输出:['Jefferson', 'Wesley', 'Steven', 'Jennifer']

    把列表解析的[]换成()得到的就是生成器表达式:

    l1 = (i for i in range(1,11))
    print(l1)
    print(l1.__next__())
    print(l1.__next__())
    #输出:    <generator object <genexpr> at 0x0000002FF33BBE60>
    #         1
    #       2

    内置函数:

    共有68个

    print:

    print('666',end='')
    print('666')
    print(1,2,3,4,5,sep='|')
    '''输出:
    666666
    1|2|3|4|5
    print自带换行
       end =""  为空,不换行
    sep 连接符
    '''

    dir:

     dir() 查找对象的所有方法
    print(dir([]))
    #打印:['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', ...]

    locals() :将局部的变量储存起来
    globals(): 将全局的变量,函数名,等等 储存起来.

    ef func():
        name = 'alex'
        print(locals())
        print(globals())
    func()
    #输出:{'name': 'alex'}
    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozenBF28>, '__spec__': None, '__annotat 。。。。。。

    help(str): 将你查询的对象所有信息都拿出来.

    abs():  绝对值

    print(abs(-1))
    #输出:1

    max(),min():

    def func(ret):
        print(44)
    # 最大值
    ret = max(1,2,-3,key=abs)  #key = abs  代表所有数字的绝对值
    print(ret)
    #最小值
    ret = min([1,2,3])
    print(ret)
    #输出:-3   1

    sum(): 求和

    #sum iterable,初始值
    ret = sum([1,2,3],10)
    print(ret)
    #输出:16
    callable() 判断此变量是不是函数名:
    name = 'alex'
    print(callable(name))
    def func():
        print(666)
    print(callable(func))
    #输出: False
    #      True

    hash(): 通过哈希表的规则,将对象转换成哈希值

    all(): 可迭代对象里面的所有的值转化成bool值如果都是True则,返回True

    print(all([1,2,3,0]))
    print(all([1,2,3]))
    #输出:False    True

    进制转换:

    #十进制转化成二进制
    print(bin(100))
    # #将十进制转化成八进制
    print(oct(9))
    # #将十进制转化成十六进制
    print(hex(33))
    '''
    输出
    0b1100100
    0o11
    0x21
    '''
    float  :有限小数,无线循环小数,不包含(无线不循环小数)
    print(1.35432,type(1.35432))
    print(float(3))
    #输出:1.35432 <class 'float'>
    #     3.0
    divmod() 分页:
    print(divmod(7,2)) #(商,余数)
    #输出:(3, 1)

    enumerate()枚举:

    l = ['手机','电话','充气娃娃',]
    for i in enumerate(l,100):
        print(i)
    '''
    输出: 元组,100是起始值
    (100, '手机')
             (101, '电话')
            (102, '充气娃娃')
    '''
    ------------------------------------
    #如果用两个值接收,则没有括号
    l = ['手机','电话','充气娃娃',]
    for i,j in enumerate(l,100):
        print(i,j)
    '''
    输出:
    100 手机
    101 电话
    102 充气娃娃
    '''
    
    

    eval(): 有返回值 除去字符串两边的引号,返回里面的内容
    exec(): 没有返回值 除去字符串两边的引号,执行里面的代码

    s = "{'name':'alex'}"
    s1 = "1+2+3+4"
    print(eval(s),type(eval(s)))     #{'name': 'alex'} <class 'dict'>
    print(exec(s),type(exec(s)))    #None <class 'NoneType'>
    print(eval(s1))                           #10
    code = '''for i in range(10):       
        print(i)'''
    print(exec(code))                    # 0,1,2,3,4,None
    any :和all对应   有一个True 就True

    ord和char相对应:
    #ord 输入字符,返回unicode对应的编码位置
    print(ord('a'))        #97
    print(ord('b'))        #98
    print(ord(''))        #20013
    #-----------------------------------------------
    # chr 输入编码位置,返回unicode对应的字符
    print(chr(97))           #"a"
    print(chr(20013))        #"中"
    print(ascii('a'))        #'a'
    print(ascii(''))       #'u56fd'
    #%r  repr 原形毕露:
    name = 'alex%r'%('sb')
    print(name)
    print(repr('[1,2]'))
    print('[1,2]')
    '''
    输出:
    alex'sb'
    '[1,2]'
    [1,2]
    '''

    #slice() 切片:

    l1 = [11,22,33,44]
    print(l1[1::2])           #[22,44]
    sl = slice(1,4,2)
    print(l1[sl])             #[22,44]
    reversed(): 倒叙,形成一个新的迭代器
    l1 = [11,33,22,44,'alex']
    l2 = reversed(l1)
    for i in l2:     #l2是迭代器需循环打印
        print(i)
    l1 = [11,33,22,44,'alex']
    l1.reverse()
    print(l1)
    #输出:['alex', 44, 22, 33, 11]

    重要的内置函数:

    max:

    dic = {3:200,2:30,1:100}
    def func(x):
        return x
    l1 = max(dic,key=func,)
    print(l1)
    #输出:3   比较的是k
    #-------------------------
    dic = {3:20,2:30,1:100}
    def func(x):
        return dic[x]
    l1 = max(dic,key=func,)
    print(l1)
    #输出:1    比较的是value   打印的是key

    zip:(可以理解为 拉链方法)可以放置多个可迭代对象,以最少的可迭代对象的个数为基准,返回一个迭代器

    l1 = [1,2,3,4,5]
    l2 = ['wusir','alex','taibai']
    l3 = ['*',"**","***"]
    print(zip(l1,l2,l3))   #输出:<zip object at 0x00000065E3C66B88>
    l4 = zip(l1,l2,l3)
    for i in l4:
        print(i)
    '''
    (1, 'wusir', '*')
    (2, 'alex', '**')
    (3, 'taibai', '***')
    '''

    map:是把可迭代对象的每一个元素,分别传入前面函数,返回迭代器

    def func(x):return x*x
    for i in map(func,[1,2,3,-4,-5,-7]):
        print(i)
    '''
    1
    4
    9
    16
    25
    49
    '''
    filter:(过滤)如果function处理某元素时候返回true,那么该元素将作为迭代器list的成员
    print([i for i in [1,2,3,4,5] if i % 2 == 0])   #[2, 4]  循环过滤出来的是列表,占内存
    def func(x):return x % 2 == 0
    for i in filter(func,[1,2,3,4,5]):
        print(i)                                    #filter返回的是迭代器,不占内存
    sorted: 排序 返回的是列表
    l1 = {2,4,3,1,6,5}
    l2 = (2,4,3,1,6,5)
    l3 = [2,4,3,1,6,5]
    print(sorted(l1))
    print(sorted(l2))
    print(sorted(l3))
    '''
    [1, 2, 3, 4, 5, 6]
    [1, 2, 3, 4, 5, 6]
    [1, 2, 3, 4, 5, 6]
    '''

    带函数的sorted:

    li = ['fsdafsa','fddsaf','qqq','fgasjdlg;dsjfg']
    def func1(x):return len(x)
    for i in sorted(li,key=func1):
        print(i)
    '''
    qqq
    fddsaf
    fsdafsa
    fgasjdlg;dsjfg
    
    '''

    zip max min map filter 返回的是迭代器 sorted 返回的是列表

  • 相关阅读:
    [转]sql语句优化原则
    [Effective C++]构造/析构/赋值运算
    [Effective C++]定制new和delete
    [Effective C++]让自己习惯C++
    [C++ primer]联合:节省空间的类
    [C++ primer]类成员指针
    [C++ primer]运行时类型识别(RTTI)
    [APUE]fork后子进程的运行情况
    [C++ primer]优化内存分配
    [C++ primer]虚函数和纯虚函数
  • 原文地址:https://www.cnblogs.com/pygg/p/8427808.html
Copyright © 2011-2022 走看看