zoukankan      html  css  js  c++  java
  • 读书笔记 《跟老齐学python》

    python帮忙解决了大整数溢出问题,但浮点数和整数不同,存在溢出问题

    对于需要非常精确的情况,可以使用decimal、numpy

    内建四舍五入函数:round

    math.pow(x,y) 和x**y是一样的

    所谓转义就是不采用符号本来的含义

    r"c: ew" 由r开头引起的字符串都是原始字符串,不会被当做转义字符

    input得到的是字符串类型(通过键盘输入的都是字符串)

    字符串格式化推荐用format

    判断字符串是否全是字母组成:"python".isalpha()

    字符和数字的转换:ord chr

    list.pop(3)的参数是索引,list.remove('python')的参数是元素

    多维列表:lst=[[1,2,3,4],[5,6,7,8]]
    print(lst[1][2])

    aa='hello,I am zcy,30 years old'
    print(aa.split(',',1)) #只分隔1次
    ['hello', 'I am zcy,30 years old']

    aa='hello      me'
    print(aa.split()) # ['hello', 'me']
    print(aa.split(' ')) #['hello', '', '', '', '', '', 'me']

    元组比列表快,可以作为字典的key,可以通过tuple(lst)将列表转为元组
    集合中的元素要是可哈希的(即是不可变的)

    d={}
    d.setdefault('name','zcy')
    print(d) # {'name': 'zcy'}
    print(d.pop('name1','gc')) # gc

    set.remove() 没有会报错;set.discard()没有不会报错

    判断集合A是否是集合B的子集,可以使用A<B或A.issubset(B)

    集合A B的对称差集:a.symmetric_difference(b)

    with open('sdf','r') as f:
        data=f.read(12)  #读取12个字符
    
    with open('sdf','r') as f:
        for line in f: #没全部加载到内存
            pass
    
    with open('sdf','r') as f:
        for line in f.readlines():# 已全部加载到内存
            pass

    f.tell() #当前位置
    f.seek(offset,whence) #偏移到某个位置

    列表推到:同时遍历两个list
    list_a = [1, 2, 3, 4]
    list_b = [2, 3, 4, 5]
    common_num = [a for a in list_a for b in list_b if a == b]
    print(common_num) # [2, 3, 4]
    找出100内能整除3的数
    print(list(range(3,100,3)))

    while ---else  或 for ---else :若没有通过break退出循环,则会进入else

    函数的参数可以写成这样:def tst(x,*args,y=2,**kwargs):

    闭包的使用类似于先创建一个类,然后实例化此类。(闭包可以先预设一些变量的值,然后反复使用)

    计算两个list的和
    list_a = [1, 2, 3, 4]
    list_b = [2, 3, 4, 5,6]
    print(list(map(lambda x,y:x+y,list_a,list_b)))
    doct=[(1,2),(4,5),(7,8)]
    x,y=zip(*doct)
    print(x)  #(1, 4, 7)
    print(y) #(2, 5, 8)

    data=[(1,2,3),(4,5,6),(7,8,9)]
    x,y,z = zip(*data) #同时遍历几个list就要有几个变量来接收返回值
    print(x,y,z) (1, 4, 7) (2, 5, 8) (3, 6, 9)

    lambda可以接收多个参数,但只有一个返回值。lambda包含的表达式不能超过一个
    lambda arg1,arg2,...:expression using arguments

    1、对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序
    foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4]
    k=sorted(foo,key=lambda x:x)
    
    2、使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为
    [0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小
    
    foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4]
    k=sorted(foo,key=lambda x:(x<0,abs(x))
    #同时对数据进行转换和计算,用生成器效率更高
    aa=sum((i * i for i in range(1, 100))) #将方括号换成圆括号后,我们将列表推导变成了生成器表达式
    d=[{"name":'zcy',"age":18},{"name":'zcy1',"age":16},{"name":'zcy2',"age":19}]
    bb=min((i['age'] for i  in d))
    两个列表变字典
    students = ["Peter", "Julia", "Alex"] marks = [84, 65, 77] dictionary = dict(zip(students, marks))
    friends = ['Team 1', 'Team 2']
    ret=list(itertools.combinations(friends, r=2))  #组合 [('Team 1', 'Team 2')]
    print(ret)
    ret=list(itertools.permutations(friends, r=2)) #排列 [('Team 1', 'Team 2'), ('Team 2', 'Team 1')]
    print(ret)

    __init__函数第一个参数必须是self,且不能有返回值

    类属性是不可变对象时,则类属性不因实例属性而变化,类属性能够影响实例属性
    类属性是可变对象时,则类属性和实例属性互相影响

    对于多重继承,继承的属性和方法按广度优先的顺序在父类中查找

    python中私有化的方法是在名字前面加双下划线

    《python入门经典》中对定制类讲的非常详细(特殊方法)

    except后面有多个参数时,要用圆括号括起来

    可以利用heapq.heapify([])直接将列表变为堆
    aa=[1,3,53,45,66,3,9]
    heapq.heapify(aa)
    print(aa) # [1, 3, 3, 45, 66, 53, 9]


    import time
    print(time.time()) #时间戳
    print(time.localtime()) #时间元组
    print(time.gmtime()) #格林时间,即UTC时间

    from datetime import date
    t=date.today()
    print(t) # 2020-02-17
    print(t.year) #2020
    print(t.month)# 02

  • 相关阅读:
    一步一步教你使用AgileEAS.NET基础类库进行应用开发基础篇演示ORM中的查询
    一步一步教你使用AgileEAS.NET基础类库进行应用开发WinForm应用篇实例一个模块(商品字典)
    DotNET企业架构应用实践基于接口开发介绍以及应用场景和案例
    DotNET企业架构应用实践实例架构设计中的业务分层提取独立的业务层
    如何去除Visual SourceSafe绑定信息
    死机也新潮,Longhorn出现致命红屏?
    推荐一套MFC界面控件(BCGControlBar Library v6.50)
    从键盘磨损度看一个人(绝对精典搞笑)(转载)
    加速你的开发工具【代码片断库插件】
    空间插值方法汇总(转载但已记不得出处了)
  • 原文地址:https://www.cnblogs.com/testzcy/p/12313225.html
Copyright © 2011-2022 走看看