• 内置函数补充


     内置函数作业:

    #1,默写map和filter:
    def pow(x):
        return x*x
    l = [1,2,3,4,5]
    print(map(pow,l))
    print(list(map(pow,l)))
    
    def is_odd(x):
        return x%2==1
    l = [1,2,3,4,5]
    print(list(filter(is_odd,l)))
    
    #2,整理内置函数的思维导图,和博客,标注红色和黄色的必须都会
    
    # 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
    name = ['alex','wupeiqi','yuanhao','nezha']
    ret = map(lambda x:x+'_sb',name)
    for i in ret:
        print(i)
    print(i) #结果为 'nezha_sb'因为for循环运行完了,i对应最后一个值
    print(list(ret))  #结果为[],因为ret作为一个迭代器,此时已经被for循环取完值了,已经取不到值了,故为空
    
    
    # 4.用filter函数处理数字列表,将列表中所有的偶数筛选出来
    num = [1,3,5,6,7,8]
    ret = list(filter(lambda x:x%2==0,num))
    print(ret)
    
    # 5.随意写一个20行以上的文件
    # 运行程序,先将内容读到内存中,用列表存储。
    # 接收用户输入页码,每页5条,仅输出当页的内容
    # with open('somewhere',encoding='utf-8') as f:
    #     data = f.readlines()
    # pages,mod = divmod(len(data),5)
    # page_num = int(input('你想看第几页:'))
    # if mod:
    #     pages +=1
    # if page_num > pages or page_num < 0:
    #     print('input wrong page')
    # elif page_num == pages and mod != 0:
    #     for i in mod:
    #         print(data[(page_num-1)*5+i].strip())
    # else:
    #     for i in range(5):
    #         print(data[(page_num - 1) * 5 + i].strip())
    
    
    # 6.如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
    portfolio = [
        {'name': 'IBM', 'shares': 100, 'price': 91.1},
        {'name': 'AAPL', 'shares': 50, 'price': 543.22},
        {'name': 'FB', 'shares': 200, 'price': 21.09},
        {'name': 'HPQ', 'shares': 35, 'price': 31.75},
        {'name': 'YHOO', 'shares': 45, 'price': 16.35},
        {'name': 'ACME', 'shares': 75, 'price': 115.65}
    ]
    
    # 6.1.计算购买每支股票的总价
    ret = map(lambda dic:{dic['name']:round(dic['shares']*dic['price'],2)},portfolio)
    print(list(ret))
    # 6.2.用filter过滤出,单价大于100的股票有哪些
    
    res = filter(lambda dic:dic['price']>100,portfolio)
    print(list(res))
    内置函数作业

    Python中应该使用%还是format来格式化字符串?

    内置函数补充:

    1,和作用域相关的:
    locals():以字典形式返回本地所有的局部变量  如果是在函数内部打印,那么函数内部所有的变量就会以 key value的形式打印出来
    golbals():以字典形式返回全局所有的变量

    2,迭代器/生成器相关的: range() iter() next()

    3.其他12个

    dir() 查看内置属性

    callable() 只要能 后面加括号的都能调用,比如print,golbals, a
    = 1,此处a就不能调用

    help() 类似dir,查看方法名字及用法
    import import time 相当于 time = __import('time')_

    oper() 返回文件句柄

    id() 返回内存地址
    hash() 对于可哈希的数据类型,转换为哈希值,数字的哈希值是它本身, 列表,字典这种可变的没哈希值 对于相同可hash数据的hash值在一次程序的执行过程中总是不变的,而且它的哈希值固定那么长 所以对于一些很长的字符串,可以替换为它的哈希值 字典的寻址方式,把key的哈希值返回的内存地址,让value指向它,

    input()

    print()

    print('我们的祖国是花园',end='')
    print('我们的祖国是花园',end='') #默认结尾是 ,现在让结尾为空,

    print(1,2,3,4,sep='|') #默认sep是空格,现在让sep是| 打印出来为 1|2|3|4
    f = open('file','w') print('aaaa',file=f) f.close() >>>>>>>>>>>则此时print不输出到屏幕,会写入到 file这个文件里 #打印进度条

    flush:立即把内容输出到流文件,不做缓存


    eval() eval(
    '1+2+3+4') 输出10 有返回值
    exec() eval('1+2+3+4') 输出None 因为它没有返回值,执行了没结果 eval和exec都可以执行字符串类型的代码,但是eval有返回值,exec没有 注意!!eval谨慎使用,只能用在你明确知道你要执行的代码是什么, 或者实在没办法,用了比较方便。因为不安全,很容易被攻击 只要攻击者修改你要eval的内容,程序就会崩溃
    eval:适合有结果的简单运算
    exec: 简单流程控制 code = for i in range(10): print(i*'*') ''' exec(code)

    compile()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ` code1 = 'for i in range(0,10): print (i)' compile1 = compile(code1,'','exec') exec(compile1) code2 = '1 + 2 + 3 + 4' compile2 = compile(code2,'','eval') print(eval(compile2)) code3 = 'name = input("please input your name:")' compile3 = compile(code3,'','single') exec(compile3) #执行时显示交互命令,提示输入 print(name) name #执行后name变量有值 "'pythoner'" compile()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

    divmod(数1,数2) 除余

    round(float,精确位数) 精确值

    pow(数1,数2,数3) 数1的数2次方 幂运算 , 数3是取余,默认为空
    sum(iterable,start) start([1,2],10) 输出13 从10开始,加上iterable里的和

    min(1,2,3,-4,key=abs) 可以加方法 输出为1
    max(1,2,3,-4,key=abs) 可以加方法 输出为-4 因为abs为绝对值,原值为-4
    继楼上的内置函数补充
    reversed():   l = [1,2,3,4,5]  用l.reverse()会把原列表反转
                  l2 = reversed(1) 保留原列表,返回一个反向的迭代器
    
    slice:  sli = slice(1,5,2),,, l[sli] == l[1:5:2]
    
    bytes   转换成bytes类型
          >>> bytes('你好',encoding='utf-8')
               b'xe4xbdxa0xe5xa5xbd'
    
    bytearray:可以修改字符串,但是前提要知道字符串的每个字符对应的索引,即列表的index
               通过修改二进制字符,达到节省内存的作用
    
    ord('好')  #22909  转换Unicode为数字
    ord('a')   #97
    chr(22909)  #'好'   转换数字为unicode
    
    ascii 用法同ord,不过 只要是ASCII码中的内容,就打印出来,不是就转换成u
    
    repr():
    print(repr(1))    结果为1
    print(repr('1'))  结果为 '1'  把数据类型打印出来
    '你好%r'%name   结果一样,此处%r就是用到了repr
    
    
    filter(func,iterable) 注意此处func是内存地址 #返回为一个iterator
    def is_odd(x):
        return x%2==1
    ret = filter(is_odd,[1,4,2,453,9,6,8])
    for i in ret:
        print(i)   >>>1,453,9
    相当于列表推导式:
    [i for i in [1,4,2,453,9,6,8] if i%2==1]
    
    
    map()
    Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。
    如果有其他的可迭代参数传进来,
    map函数则会把每一个参数都以相应的处理函数进行迭代处理。
    map()函数接收两个参数,一个是函数,一个是序列,
    map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
    
    有一个list, L = [1,2,3,4,5,6,7,8],
    我们要将f(x)=x^2作用于这个list上,
    那么我们可以使用map函数处理。
    
    L = [1,2,3,4,]
    def pow2(x):
        return x*x
    map(pow2,L)   #>>>>[1, 4, 9, 16]
    
    
    sorted():
    print(sorted(l,key=abs,reverse=True))      # 生成了一个新列表 不改变原列表 占内存
    print(l)                                   # list.sort() 是在原列表上排序
    l = ['   ',[1,2],'hello world']
    new_l = sorted(l,key=len)
    print(new_l)
  • 相关阅读:
    数据库新增“自动添加”类字段 auto_now_add 如何不影响之前数据
    django rest framework serializer中获取request中user方法
    django Table doesn't exist
    python 日期换算星期 蔡勒公式
    python pdfkit html转pdf响应式轮子 django例
    Python Excel 多sheet 多条数据 自定义写入
    Python 爬虫 Vimeo视频下载链接
    Python 快速排序 算法
    jvm内存模型
    JMV的学习
  • 原文地址:https://www.cnblogs.com/gkx0731/p/9558340.html
Copyright © 2020-2023  润新知