• [学习总结] python语言学习总结 (一)


    还是不多说话了。。

    1.eval函数

    用法:eval(expression, globals=None, locals=None)

    解释:将字符串str当成有效的表达式来求值并返回计算结果。

    就是可以将字符串转换为表达式来运行,当然可以转换为某个函数执行。
     

    使用:

    a = 1
    b = 1
    val1 = a + b
    val2 = eval("a+b")
    def f():
        a = 10
        b = 10
        val3 = eval("a+b",globals())
        val4 = eval("a+b")
        return val3,val4
    print(val1,val2,f())
     
    #2 2 (2, 20)

    2.sort sorted用法 

    只要是可迭代对象数据,都能够进行排序,生成一个排序后的列表。
    list.sort()函数会对list进行排序操作,改变原有list;而sorted(list)之后会返回一个copy,不会对原来的list有影响。

    sorted(iterable, key=None, reverse=False)
    
    list.sort(iterable, key=None, reverse=False)

    两者参数一模一样,因此用代码加以区分:

    a = [1,5,3,9,7]
    b = [9,3,7,2,6]
    print(a.sort())
    print(a)
    print(sorted(b))
    print(b)
    
    #None
    #[1, 3, 5, 7, 9]
    #[2, 3, 6, 7, 9]
    #[9, 3, 7, 2, 6]

    3.split 用法 

    Python中有split()和os.path.split()两个函数,具体作用如下:

    split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)

    os.path.split():按照路径将文件名和路径分割开

    str.split(str="",num=string.count(str))[n]

    str:分隔符,默认为空格,但是不能为空'',如果没有分隔符,就把整个字符串作为列表的第一个元素。
    num:分割次数。
    [n]:取第n个分片。

    使用:

    str = "http://cnblogs.com/aoru45"
    val1 = str.split()
    val2 = str.split("/")
    val3 = str.split("/",2)
    val4 = str.split("/",2)[0]
    print(val1,val2,val3,val4)
    #['http://cnblogs.com/aoru45'] ['http:', '', 'cnblogs.com', 'aoru45'] ['http:', '', 'cnblogs.com/aoru45'] http:

    4.list各种操作和操作的时间复杂度 

    Operation

    Average Case

    Amortized Worst Case

    Copy

    O(n)

    O(n)

    Append[1]

    O(1)

    O(1)

    Pop last

    O(1)

    O(1)

    Pop intermediate

    O(k)

    O(k)

    Insert

    O(n)

    O(n)

    Get Item

    O(1)

    O(1)

    Set Item

    O(1)

    O(1)

    Delete Item

    O(n)

    O(n)

    Iteration

    O(n)

    O(n)

    Get Slice

    O(k)

    O(k)

    Del Slice

    O(n)

    O(n)

    Set Slice

    O(k+n)

    O(k+n)

    Extend[1]

    O(k)

    O(k)

    Sort

    O(n log n)

    O(n log n)

    Multiply

    O(nk)

    O(nk)

    x in s

    O(n)

     

    min(s), max(s)

    O(n)

     

    Get Length

    O(1)

    O(1)

     

    5.help函数的使用 

    使用help()可以帮助我们迅速了解某个函数的作用。同时呢,当我们定义某个函数的时候,我们也一样可以写一些帮助方便别人理解。
    当我输入help(print)的时候呢,终端会返回:

    Help on built-in function print in module builtins:
    
    print(...)
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
    
        Prints the values to a stream, or to sys.stdout by default.
        Optional keyword arguments:
        file:  a file-like object (stream); defaults to the current sys.stdout.
        sep:   string inserted between values, default a space.
        end:   string appended after the last value, default a newline.
        flush: whether to forcibly flush the stream.

    我们便可以看到print函数的说明和参数情况。
    当我们自己定义函数的时候呢,我们可以这样:

    def f(int a):
        '''this is a function that returns a+1'''
        return a+1
    help(f)
    #会输出
    #Help on function f in module __main__:
    #f(a=0)
    #    this is a function that returns a+1

    6. = copy.copy copy.deepcopy区别

    copy和deepcopy都能实现拷贝的操作,不同的是,copy拷贝的过程中不会创建新空间,看下面的例子,b使用copy拷贝了a,当a的2改为99的时候,b的值也改变了,但是为什么a添加[7,8,9]的时候,b没有添加呢,原来,b拷贝的只是a原有的list中的两个地址,当a添加一个元素的时候呢,相当于加了一个地址,而在b中没拷贝,所以b还是不添加元素。c是deepcopy来的,a的任何变化都不能影响c的变化。copy只是复制了简单对象,复杂对象如嵌套的list会作为公共元素,因此修改原对象的复杂对象会导致copy后的对象元素修改。

    import copy
    a = [[1,2,3],[4,5,6]]
    b = copy.copy(a)
    c = copy.deepcopy(a)
    a.append([7,8,9])
    a[0][1] = 99
    print(a)
    print(b)
    print(c)
    
    '''
    [[1, 99, 3], [4, 5, 6], [7, 8, 9]]
    [[1, 99, 3], [4, 5, 6]]
    [[1, 2, 3], [4, 5, 6]]
    '''

    7.*l 函数接受任意个数参数 **kw 函数接受任意个关键字参数

    在python中,使用*可以接受任意个数的参数,而使用**可以接受任意个数的关键字参数。

    def a(*l):
        result = 0
        for val in l:
            result = result + val
        return result
    def b(**kw):
        result = 0
        result = kw["keyword_1"]+kw["keyword_2"]
        return result
    print(a(1,2,3,4,5))
    print(a(1,2,3))
    print(b(keyword_1 = 10,keyword_2=20))
    
    '''
    15
    6
    30
    '''

    参考:

    1.python eval() https://www.cnblogs.com/dadadechengzi/p/6149930.html

    2.Python 内置函数sorted()在高级用法 https://www.cnblogs.com/brad1994/p/6697196.html

    3.Python中的split()函数的用法 https://www.cnblogs.com/hjhsysu/p/5700347.html

    4.list各种操作和操作的时间复杂度 https://wiki.python.org/moin/TimeComplexity

  • 相关阅读:
    linux下syscall函数 间接系统调用
    多线程 概述
    linux 信号与多线程
    linux ps命令介绍
    终端 进程关系
    shell 前台进程组的选择
    try catch finally的执行顺序到底是怎样的?
    OpenCV中遇到Microsoft C++ 异常 cv::Exception
    hdu1087Super Jumping! Jumping! Jumping!(最大递增序列和)
    [置顶] java Gui 键盘监听事件
  • 原文地址:https://www.cnblogs.com/aoru45/p/9894770.html
走看看 - 开发者的网上家园