zoukankan      html  css  js  c++  java
  • python学习笔记(三)

    tips:pass的用途

      pass是为了占据一个位置,因为如果定义一个空函数程序会报错,当你没有想好函数的内容是可以用 pass 填充,使程序可以正常运行。

    Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。

    集合的特点:

    1)访问速度快;

    2)天生解决重复问题

    3)difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

      实例:更新数据库

    old_set = set(old_dict.keys())
    update_list = list(old_set.intersection(new_dict.keys()))#相交
    
    new_list = []
    del_list = []
    
    for i in new_dict.keys():
        if i not in update_list:
            new_list.append(i)
    
    for i in old_dict.keys():
        if i not in update_list:
            del_list.append(i)
    
    print update_list,new_list,del_list

      地址:

    https://www.cnblogs.com/wupeiqi/articles/4911365.html

    2.Diffsymm-diff的区别

    diff:A-B

    symm-diff:a+b-ab

    3.collections系列

    Counter是对字典类型的补充,用于追踪值出现的次数。

    c = Counter('abcdeabcdabcaba')
    print c
    输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

    tips:Counter(dict)是一种字典,实例如下:

    import collections
    obj = collections.Counter('nnanchbsdcnnxuwbcashduwdiqjabuivbuqehdiqjsio')
    print(obj)
    ret = obj.most_common(4)
    print(ret)
    for k,v in obj.items():
        print(k,v)

    运行结果为:

      

    n 5
    a 3
    c 3
    h 3
    b 4

    tips:subtract减去

    3)有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

    代码如下:

    from collections import defaultdict
    
    values = [11,22,33,44,55,66,77,88,99,90]
    my_dict = defaultdict(list)
    
    for value in values:
        if value>66:
            my_dict['k1'].append(value)
        else:
            my_dict['k2'].append(value)
    
    print(my_dict)

    Tips:元组不可修改

    所以元组到底可不可变?从上面可以看到tuple不支持=这种assign操作,但是对其中可变元素的原地修改是可以的+=, -=, =, /=, //=, %=, *=, <<=, >>=, &=, ^=, |=这些操作符都是原地修改可变对象,不会改变对象所以,tuple元组的不可变是指元素对象的引用不可变,不能对其再次赋值,但是在其中可变元素对象的引用不被修改前提下,仍旧可以对可变元素对象修改

    4.可命名元组

    代码实例如下:

    import collections
    MytupleClass = collections.namedtuple('Mytuple',['x','y','z'])
    obj = MytupleClass(11,22,33)
    print(obj)

    tips:deque.rotate():将最后几个数放到队列前面

    数字或者字符串深浅拷贝并不改变其内存位置。

    深浅拷贝示意图:

    浅拷贝只拷贝一层

    深拷贝可以拷贝多层

    实例:

    import copy
    dic = {'cpu':[80,],
           'mem':[80,],
           'disk':[80,]}
    print('before',dic)
    new_dic = copy.deepcopy(dic)
    new_dic['cpu'][0] = 50
    print(new_dic)

    函数:

    默认参数

    实例:

    def plus():
        a= int(input('请输入第一个数'))
        b = int(input('请输入第二个数'))
        c = a+b
        print(c)
    
    plus()

    形式参数的运用:

    def plus(c):
        while c<1000:
            c +=1
        print(c)
    
    plus(10)

    默认参数的运用:

    def show(a1,a2=999):
        print(a1,a2)
    
    show(111,888)

    运行结果为:111,888

    show(a2=111,a1=888)#指定参数
    def show(*arg):
        print(arg,type(arg))
    
    show(11,222,333,)#*转换为元组
    def show(**arg):
        print(arg,type(arg))
    
    show(n1=11,n2=43)#转换为字典
    def show(*args,**kwargs):
        print(args,type(args))
        print(kwargs,type(kwargs))
    
    show(11,22,33,444,n1=100,alex='sb')

    特别注意的是:

    def show(*args,**kwargs):
        print(args,type(args))
        print(kwargs,type(kwargs))
    
    l1 = [11,222,333,444]
    d1 = {'n1':100,'alex':'sb'}
    show(*l1,**d1)

    l1作为元组,d1作为字典,为了不变成元组元素,需要分别加星。

    5.字符串的格式化

    s1 = '{0} is {1}'
    ret = s1.format('alex','sb')
    print(ret)
    
    s2 = '{name} is {acter}'
    d = {'name':'alex','acter':'2b'}
    result = s2.format(**d)
    print(result)

    6.lambda函数

    func = lambda a:a+1#创建形式参数a,函数内容a+1并return
    ret = func(99)
    print(ret)

    7.内置函数

    Tips:ascii() 函数返回任何对象(字符串,元组,列表等)的可读版本。ascii() 函数会将所有非 ascii 字符替换为转义字符:å 将替换为 xe5

    class Foo:
        def __repr__(self):
            return 'clutch'
    f = Foo()
    ret = ascii(f)
    print(ret)

    __repr__object转换为string格式,ascii()转换为标准版本。

    Bytearray功能:转换为二进制数组。

    Tips:callable()是否可执行

    Ord:字母转换为ascii

    Chr():ascii码转换为字母chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

    eval('6*8')

    用来执行字符串表达式,并返回值。

    48

    Map函数

    li = [11,22,33]

    >>> new_li = map(lambda x:x+100,li)#返回迭代器

    >>> for i in new_li:print(i)

    ...

    111

    122

    133

    li = [11,22,33]

    def func(x):
        if x>22:
            return True
        else:
            return False

    n = filter(func,li)
    print(list(n))

    Filter筛选

    Oct()八进制

    Hex()十六进制

    Round()四舍五入

    Dir()返回key

    Vars()返回key与value

    Zip()返回数对

    f = open('test.log','w')
    f.write('dcabd')
    f.close()

    f = open('test.log','r')
    ret = f.read(2)
    f.close()
    print(ret)

    按字符去读取,f.tell()用指针(按照字节)。f.seek()改变指针位置

    ret = f.read()
    ret2 = f.truncate()
    f.close()
    print(ret2)
    print(ret)

    Truncate()保留指针前的字符

  • 相关阅读:
    子查询
    多表连接
    类型转换和其他函数
    亲测!Jquery2.0不支持IE8-了
    Sass结合Modernizr的使用方法
    子元素绝对定位撑不开父元素的解决方法
    ajax withCredentials在firefox下问题的解释
    记录遇到的IE8兼容性问题汇总
    对于requirejs AMD模块加载的理解
    requirejs 小结
  • 原文地址:https://www.cnblogs.com/resort-033/p/12301682.html
Copyright © 2011-2022 走看看