zoukankan      html  css  js  c++  java
  • python的一点奇技淫巧

    for-else结构

    参考自:https://www.jb51.net/article/164426.htm

    先看代码:


    for…else… 与 if…else… 表现得不一样,按照以往经验来说,执行了 for 语句块中的代码就不执行 else 里面的,反之亦然。
    然而,我们看到的却恰恰相反,for 循环结束之后接着又执行了 else 语句块。

    用 break 提前终止 for 循环,会发生什么?

    循环遇到 break 退出后,整个语句就结束,else 语句块也不执行了。
    综上,我们可以得出这样一个结论,只有当循环里没有遇到 break 时,else 块才会执行。此刻,你应该明白了,真正和 else 搭配使用的是 for 循环中的 break,break ... else ... 才是两个互斥的条件。

    存在的意义

    当你用 for 循环迭代查找列表的中的某个元素时,如果找到了就立刻退出循环,如果迭代完了列表还没找到需要以另外一种形式(比如异常)的方式通知调用者时,用 for...else... 无疑是最好的选择。

    如果不用 for...else... , 那么还需要专门建立一个临时标记变量来标记是否已经找到了:

    当你想在房间里找某样东西时,只要在任意位置找到了,就停止继续搜查工作。但如果把整个房间都翻遍了,还没找到我们想要的东西时,需要告诉人家,很抱歉,这儿没有你要找的东西。遇到这样的情况时就用 for ... else ,除此之外,恐怕只会引起误操作。

    默认字典值

    1. Python 字典 setdefault() 函数是添加键并将值设为默认值。
    2. Python 使用 defaultdict 默认字典共建一个初始值为空
      当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值。
    from collections import defaultdict
    d = defaultdict( factory_function )
    

    这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0,如下举例:

    搭建简易的本地局域网

    python3 -m http.server 8888 打开浏览器,输入 本地IP:8888 可以查看本主机的文件目录,方便局域网共享文件。

    二维数组变一位数组


    避免循环。

    快速更换字典的key和value

    有序字典

    列表中最大、最小的前n个数字

    二维列表逆序遍历

  • 相关阅读:
    【Leetcode_easy】852. Peak Index in a Mountain Array
    【Leetcode_easy】849. Maximize Distance to Closest Person
    【Leetcode_easy】844. Backspace String Compare
    【Leetcode_easy】840. Magic Squares In Grid
    【Leetcode_easy】836. Rectangle Overlap
    【Leetcode_easy】832. Flipping an Image
    【Leetcode_easy】830. Positions of Large Groups
    【Leetcode_easy】824. Goat Latin
    【Leetcode_easy】821. Shortest Distance to a Character
    【Leetcode_easy】819. Most Common Word
  • 原文地址:https://www.cnblogs.com/Higgerw/p/14364124.html
Copyright © 2011-2022 走看看