• 每个新手程序员都应该知道的Python技巧


    当下,Python 比以往的任何时候都更加流行,人们每天都在实践着 Python 是多么的强大且易用。

    我从事 Python 编程已经有几年时间了,但是最近6个月才是全职的。下面列举的这些事情,是我最开始使用 Python 的时候,就希望清楚的:

    • 字符串操作
    • 列表推导
    • Lambda 和 Map 函数
    • 在一行里使用 if elif 和 else 条件判断
    • zip() 函数
      这里注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教!

    字符串操作

    Python 非常擅长使用类似数学运算符 + 和 * 来操作字符串

    >>> my_string = "Hi Medium..!"
    >>> print(my_string * 2)
    Hi Medium..!Hi Medium..!
    >>> print(my_string + " I love Python" * 2)
    Hi Medium..! I love Python I love Python
    复制代码

    我们也可以非常方便的对字符串做取反操作,只需要使用 [::-1] 就可以,同时该操作还不仅仅局限于字符串操作。

    >>> print(my_string[::-1])
    !..muideM iH
    >>> my_list = [1,2,3,4,5]
    >>> print(my_list[::-1])
    [5, 4, 3, 2, 1]
    复制代码

    那么对于包含多个字符串的列表呢,我们甚至可以做一个 Yoda-translator !

    >>> word_list = ["awesome", "is", "this"]
    >>> print(' '.join(word_list[::-1]) + '!')
    this is awesome!
    复制代码

    在上面的代码中,我们使用了 .join() 方法,用空格把反转列表里的元素拼接了起来,并且增加了感叹号。

    列表推导

    哦,天啊!一旦我知道了这些,我的整个世界都改变了(可能还没有真实发生,但是已经接近了)。这是以中国强大的、直观的且可读的方法来快速的操作列表。

    假如我们有这样一个函数,取一个数的平方再增加5

    >>> def stupid_func(x):
    >>>     return x**2 + 5
    复制代码

    现在如果我们要把该函数应用到一个列表的所有奇数当中,如果不了解列表推导式,你可能会这么写

    >>> my_list = [1, 2, 3, 4, 5]
    >>> new_list = []
    >>> for x in my_list:
    >>>     if x % 2 != 0:
    >>>         new_list.append(stupid_func(x))
    >>> print(new_list)
    [6, 14, 30]
    复制代码

    但是我们还有更简单的方法!

    >>> my_list = [1, 2, 3, 4, 5]
    >>> print([stupid_func(x) for x in my_list if x % 2 != 0])
    [6, 14, 30]
    复制代码

    列表推导适用于 [ expression for item in list ] 条件,同时如果那你想要应用一些布尔条件,例如上面获取奇数的条件: [ expression for item in list if conditional ],那么它和下面的写法是一致的

    >>> for item in list:
    >>>     if conditional:
    >>>         expression
    复制代码

    很酷,不过我们还可以做的更好,因为我们根本不需要函数“stupid_func”

    >>> print([x ** 2 + 5 for x in my_list if x % 2 != 0])
    [6, 14, 30]
    复制代码

    Lambda 和 Map

    Lambda

    Lambda 有一点奇怪,但是就像我介绍的其他内容一样,只要你去只用它,就会发现它是多么的强大和直观。

    Lambda 其实就是一个小的匿名函数。为什么要匿名呢?这是因为 Lambda 常常用来执行小型简单的操作,而这些操作往往不需要使用 def my_function() 来定义正式的函数

    我们还是以上面的例子为例,对一个数进行平方并加5。在上面的代码中我们定义了一个函数 def stupid_func(x),现在让我们使用 Lambda 来重新创建它

    >>> stupid_func = (lambda x : x ** 2 + 5)
    >>> print([stupid_func(1), stupid_func(3), stupid_func(5)])
    [6, 14, 30]
    复制代码

    那么,为什么要使用这种奇怪的语法呢?其实这种写法的用处就体现在,我们不要定义实际的功能,就可以实现一些简单的操作。我们继续以数字列表为例,如果我们想对下面的列表进行排序,一种方法是使用 sorted()

    >>> my_list = [2, 1, 0, -1, -2]
    >>> print(sorted(my_list))
    [-2, -1, 0, 1, 2]
    复制代码

    这样确实可以了,但是,如果我们想按照元素平方数的大小来排序,使用 Lambda 就非常方便了。可以使用 Lambda 来定义 sorted() 函数用于排序的 key

    >>> print(sorted(my_list, key = lambda x : x ** 2))
    [0, -1, 1, -2, 2]
    复制代码

    Map

    Map 是一个用来将函数应用到序列的每个元素上,比如列表。假设我们必须要列出两个列表对应位置元素的乘积,那么该怎么做呢,可以使用 Lambda 和 Map

    >>> print(list(map(lambda x, y : x * y, [1, 2, 3], [4, 5, 6])))
    [4, 10, 18]
    复制代码

    和下面的代码相比,Lambda 与 Map 的组合实在是太优雅了

    >>> x, y = [1, 2, 3], [4, 5, 6]
    >>> z = []
    >>> for i in range(len(x)):
    >>>     z.append(x[i] * y[i])
    >>> print(z)
    [4, 10, 18]
    复制代码

    在一行里使用 if elif 和 else 条件判断

    有时,你可能会写出如下的代码

    >>> x = int(input())
    >>> if x >= 10:
    >>>     print("Horse")
    >>> elif 1 < x < 10:
    >>>     print("Duck")
    >>> else:
    >>>     print("Baguette")
    复制代码

    运行此命令时,系统会提示你从 input() 函数输入内容,假设我们输入5,我们将得到 Duck。 但是我们也可以像下面这样写

    print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")
    复制代码

    这实在是太简单了!快去阅读你的旧代码,你会发现有太多的地方可以将这种简单的 if else 判断替换成这种单行判断。

    zip()

    还记得在 Map 函数部分,我们并行处理两个列表的例子嘛,使用 zip() 会更加简单

    假如我们有两个列表,一个包含名字,一个包含姓氏,怎样才能很好的合并它们呢,使用 zip()!

    >>> first_names = ["Peter", "Christian", "Klaus"]
    >>> last_names = ["Jensen", "Smith", "Nistrup"]
    >>> print([' '.join(x) for x in zip(first_names, last_names)])
    ['Peter Jensen', 'Christian Smith', 'Klaus Nistrup']
    复制代码

    哇哦,有个地方错了,我的名字不叫 Peter Jensen,那么就可以调整如下

    >>> print([' '.join(x) for x in zip(first_names, last_names[::-1])])
    ['Peter Nistrup', 'Christian Smith', 'Klaus Jensen']
    
    复制代码

    结束语

    我这里只是汇总了一个简单的清单,另外大家要注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教!

    本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 相关阅读:
    LeetCode OJ:Rotate List(旋转链表)
    LeetCode OJ:Gas Station(加油站问题)
    LeetCode OJ:Reverse Nodes in k-Group(K个K个的分割节点)
    Qt实现简单的单例模式
    LeetCode OJ:Merge k Sorted Lists(归并k个链表)
    LeetCode OJ:LRU Cache(最近使用缓存)
    LeetCode OJ:Maximal Rectangle(最大矩形)
    LeetCode OJ:Number of Islands(孤岛计数)
    LeetCode OJ:Valid Sudoku(有效数独问题)
    从hive导入到oracle(Hcatalog)
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12745437.html
Copyright © 2020-2023  润新知