美文网首页让前端飞轮子工厂程序猿阵线联盟-汇总各类技术干货
我敢打赌,这份Python入门教程看了绝对有用

我敢打赌,这份Python入门教程看了绝对有用

作者: 在北方玩弹子球 | 来源:发表于2018-10-23 21:47 被阅读125次

    前段时间用Python刷了一些题,把刷题的过程遇到的一些小知识点总结了一下,都是一些比较基础的知识点,特别适合一些刚入门的新手看~

    lambda表达式

    lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。它只是一个表达式,函数体比def简单很多。
    3个数求和的例子:

    f = lambda x,y,z:x+y+z
    f(1,2,3)
    6
    而如何要用正常函数实现上述功能的话,需要先用def定义函数名,代码如下:
    def f(x,y,z):
    return x+y+z
    n = f(1,2,3)
    6
    filter()、map()和reduce()函数的区别

    filter()函数
    包括两个参数,分别是function和list。该函数根据function参数返回的结果是否为真来过滤list参数中的项,最后返回一个新列表,如下例所示:

    a=[1,2,3,4,5,6,7]
    b=filter(lambda x:x>5, a)
    print b
    [6,7]
    如果filter参数值为None,就使用identity()函数,list参数中所有为假的元素都将被删除。如下所示:
    a=[0,1,2,3,4,5,6,7]
    b=filter(None, a)
    print b
    [1,2,3,4,5,6,7]
    map()函数
    map()的两个参数一个是函数名,另一个是列表或元组。
    map(lambda x:x+3, a) #这里的a同上
    [3,4,5,6,7,8,9,10] #另一个例子
    a=[1,2,3] >>>b=[4,5,6]
    map(lambda x,y:x+y, a,b)
    [5,7,9]
    在刷题的过程中,map()函数通常可以结合输入一起使用,例如在一行中输入3个整数,可用如下语句:
    a,b,c = map(int, input().split())
    reduce()函数
    reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
    例如,编写一个f函数,接收x和y,返回x和y的和:
    def f(x, y):
    return x + y
    调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:
    先计算头两个元素:f(1, 3),结果为4;
    再把结果和第3个元素计算:f(4, 5),结果为9;
    再把结果和第4个元素计算:f(9, 7),结果为16;
    再把结果和第5个元素计算:f(16, 9),结果为25;
    由于没有更多的元素了,计算结束,返回结果25。

    range() 函数用法

    range() 函数可创建一个整数列表,一般用在 for 循环中。语法如下:
    range(start, stop, step)
    实例:

    range(10) # 从 0 开始到 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    range(1, 11) # 从 1 开始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    range(0, 30, 5) # 步长为 5 [0, 5, 10, 15, 20, 25]
    range(0, 10, 3) # 步长为 3 [0, 3, 6, 9]
    range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
    range(0) []
    range(1, 0) []

    range 在 for 中的使用:
    for i in range(n): # 正序遍历,表示i的取值从0到n-1
    for i in range(n,0,-1): # 倒序遍历,表示i的取值从n到1
    dict字典

    dict字典使用键-值(key-value)存储,具有极快的查找速度。在Java中也称为map。
    举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:
    names = ['Michael', 'Bob', 'Tracy']
    scores = [95, 75, 85]
    给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。
    如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:

    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    d['Michael'] 95
    我在刷题的时候,遇到一个问题就是需要在循环中动态往dict添加数据,但是没有找到添加的函数,其实不用插入函数,循环中动态往dict添加数据也很简单,如下所示:
    dt = {} #先定义一个字典,注意是{},如果定义数组是[]
    for i in range(n):
    dt[key[i]] = value[i]
    sort与sorted的排序问题

    sort参数说明
    L.sort(cmp=None, key=None, reverse=False)
    sorted参数说明
    sorted(iterable, cmp=None, key=None, reverse=False)
    iterable:是可迭代类型,通常为一个集合;
    cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
    key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
    reverse:排序规则. reverse = True 表示降序 或者 reverse = False 表示升序,默认值为False。
    使用sort()方法对list排序会修改list本身,不会返回新list,使用方法如下:
    my_list = [3, 5, 1, 4, 2]
    my_list.sort()
    print my_list

    输出:

    [1, 2, 3, 4, 5]
    而使用sorted()方法排序时会返回一个新的list:
    my_list = [3, 5, 1, 4, 2]
    result = sorted(my_list) #返回一个新的list
    print result

    输出:

    [1, 2, 3, 4, 5]
    常用的一些零散的小知识

    求实数的多少次幂
    正常在java和C语言中,求一个数的幂需要调用一个求幂的函数,但是Python中直接一个运算符就可以搞定了:

    Python求幂

    102 #10的平方
    10
    4 #10的4次方
    print(‘xx’,end=’’)中end问题
    end是print()函数的一个参数。end 是输出语句结束以后附加的字符串,它的默认值是换行(’ ’)。如果输出的时候不需要换行需要显示的给end赋值。
    例如输出一个数组,每个数之间以空格隔开,可以用如下语句:
    for i in range(n):
    print(data[i],end=' ') #end值为空格
    如果只是单纯的想要输出不换行,可以令end='',end值为空字符串

    // 与 / 的区别
    “ / “ 表示浮点数除法,返回浮点结果;
    “ // “ 表示整数除法,返回不大于结果的一个最大的整数
    【code】
    print("6 // 4 = " + str(6 // 4))
    print("6 / 4 =" + str(6 / 4))
    【result】
    6 // 4 = 1
    6 / 4 =1.5
    记得用set去除重复元素
    如果一个数组中有很多重复元素,根据需求需要去除重复元素的话,可以使用set集合,类似于Java的HashSet。
    语法很简单,只需一行代码就可以去重,如下所示:
    【code】
    a = [1,1,2,2,3,4,5]
    a = set(a) print(a)
    【result】
    {1, 2, 3, 4, 5}
    ps:码字不易,如果你觉得有帮助的话,帮忙转发一下吧~


    微信公众号:轮子工厂,机器学习 | 数据结构与算法 | 源码分析 | 资源与工具分享

    相关文章

      网友评论

        本文标题:我敢打赌,这份Python入门教程看了绝对有用

        本文链接:https://www.haomeiwen.com/subject/mydzzftx.html