今天给大家分享几个Python里面的骚操作,大家会更加感受到Python编码的强大。

1.用字典映射代替switch case语句

大家首先看下面这段用C#编写的switch case代码,代码很好理解,switch函数传入一个参数day,参数的不同对应不同的case语句,那怎么将这段代码用Python里面的字典代替呢?

switch(day){case 0:dayName = "Sunday";break;case 1:dayName = "Monday";break;case 2:dayName = "Tuesday";break;...default:dayName = "Unknown";break;}

我的第一反应是if else条件语句,但是如果用条件语句的话,就体现不出现Python代码的强大了,条件语句是各种语言都通用的一种形式,再想想有没有其他的方法?

啊哈,我想到了字典,字典里面的键值对刚好可以映射这个业务功能,具体代码如下

day = 0
switcher = {0:'Sunday',1:'Monday',2:'Tuesday'
}day_name = switcher.get(day,'Unknown')print(day_name)

上面代码中用到一个Python内置函数get,get函数有很好的容错性,第一个参数就是day,第二个刚好对应switch case语句中的‘unknown’

但这样写还是用一定的局限性,有点基础的同学都知道,switch case之间可以随便扩展,写很多模块,那么这样一来,再把字典的值当作是一个常量就不合适了,因此,我们可以自定义函数,将函数作为一个参数传入字典中的值位置,具体代码如下

 day = 0def get_sunday():return 'Sunday'def get_MOnday():return 'Monday'def get_Tuesday():return 'Tuesday'def get_default():return 'Unknown'switcher = {0:get_sunday,1:get_MOnday,2:get_Tuesday
}day_name = switcher.get(day,get_default)()
print(day_name)

2.列表推导式

叫列表推导式不是说只能推导列表,至于它为什么叫这个,who care,还是通过一个实例来理解

比如现在有一个列表,通过遍历列表,然后将每个元素平方后打印结果。

 a = [1,2,3,4,5,6,7,8]b = [i**2 for i in a]print(b)

现在如果加一个条件,将列表中大于5的元素平方后打印结果,也很方便,直接在后面加一个if 条件判断

 a = [1,2,3,4,5,6,7,8]
a1 ={1,2,3,4,5,6,7,8}      #集合推导b = [i**2 for i in a if i>=5]
b1 = {i**2 for i in a if i>=5}print(b)
print(b1)

3.字典推导列表推导式

刚才已经说了,不仅仅只有列表可以用列表推导式,那字典如何实现这个功能呢?

 students = {'喜小乐':18,'石敢当':20,'横小五':15
}b = {key for key,value in students.items()}
print(b)

通过上面的代码可以看出,首先字典的最外层是{},其次字典有key和value,再用一个内置函数items将字典的键或值提取出来。

当然,我们也可以将键和值颠倒一下

 students = {'喜小乐':18,'石敢当':20,'横小五':15
}b = {value,key for key,value in students.items()}
print(b)

最后,我们用这个看一下元组的列表推导式

 students = {'喜小乐':18,'石敢当':20,'横小五':15
}b1 = (key for key,value in students.items())   #元组推导列表推导式
print(b1)<generator object <genexpr> at 0x000000000216A750>

运行代码,结果很奇怪,不能将键和值显示出来,而是出现generator,为什么会这样呢?因为元组是不可变的,这个知识点在前面学习过,不知道大家还有没有印象。

那怎么将键和值显示出来,具体代码如下:

 students = {'喜小乐':18,'石敢当':20,'横小五':15
}b1 = (key for key,value in students.items())   #元组推导列表推导式for x in b1:print(x)

总结

列表推导式是一种非常简洁的创建列表的方式,很多时候我们需要创建一个满足特定要求的新列表,不得不用for循环创建,而用列表推导式来表达只需要一行代码即可。

python switch语句_几个Python里的骚操作相关推荐

  1. python判断语句_详解Python判断语句的使用方法

    本篇介绍Python判断语句的使用,主要讨论简单条件语句.多重条件语句和嵌套条件语句,在讲解的每个案例中都配有流程图和代码说明.通过本篇的学习,可以达成如下目标. ● 掌握判断语句的使用规则 ● 判断 ...

  2. python case语句_高效使用Python字典,技巧都在这里!

    字典(dict)对象是 Python 最常用的数据结构 社区曾有人开玩笑地说:"Python企图用字典装载整个世界" 字典在Python中的重要性不言而喻,这里整理了几个关于高效使 ...

  3. python清空语句_怎么清除python编译器的语句

    清除python编辑器的方法: 1.下载清屏函数clearwindow.py,然后复制clearwindow.py文件,并放在Python安装目录PythonXLibidlelib下面 2.在Pyth ...

  4. python switch语句的多种实现方法

    python switch语句的多种实现方法 说明:  - python中没有switch关键字   - 定义 字典  - 调用 字典的get(key)获取对应的表达式 1,实现switch的一般方式 ...

  5. switch语句中在case块里声明变量会遇到提示“Expected expression before...的问题

    switch语句中在case块里声明变量会遇到提示"Expected expression before..."的问题 例如在如下代码中 1 case constant: 2 in ...

  6. 【C语言】那些优秀代码里的骚操作(持续更新…)

    [C语言]那些优秀代码里的骚操作(持续更新-) 1.联合体`union`的妙用 2.`#include`的本质是什么? 3.脱裤子放屁的`do{ }while(0)` 4.一个成熟的代码要学会自己写函 ...

  7. python搞笑语句_云计算开发学习笔记:Python3 import语句

    原标题:云计算开发学习笔记:Python3 import语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: 当解释器遇到 import 语句,如果模块在当前的 ...

  8. python 结束语句_结束语

    python 结束语句 Recently, chatter bots have been used in many services of our day lives. These bots can ...

  9. python程序停止运行语句_怎么停止python脚本

    1.time.sleep(secs) 参考文档原文:Suspend execution for the given number of seconds. The argument may be a f ...

最新文章

  1. 四阶龙格库塔法的基本思想_龙格库塔积分算法
  2. Netty入门(七)使用SSL/TLS加密Netty程序
  3. ueditor的配置和使用
  4. 太原市中考计算机考试系统,太原中考报名系统
  5. hdu 1398 Square Coins/hdu 1028 Ignatius and the Princess III
  6. 双系统的电脑中如何完美系统其中一个操作系统
  7. oopc——3.封装
  8. 【图像处理】C++将读取图像并将图像转换为矩阵的形式
  9. Linux下模拟多线程的并发并发shell脚本
  10. python编程教学软件-B站最受欢迎的Python教程,免费教学视频可以下载了
  11. 11种绕过CDN查找真实IP方法(查找网站真实IP地址、查找域名真实IP)
  12. 简历javaweb项目描述怎么写_从事java开发工作简历怎样写工作描述
  13. Meltdown漏洞分析
  14. c#窗体应用程序链接本地html网页,使用C# Winform应用程序获取网页源文件的解决方法...
  15. 常见编程错误及解决方法,避免踩雷
  16. CSS3知识点复习与总结
  17. CTF的认识(勿喷,求饶)
  18. 技术经典图书(附电子版下载地址)
  19. 暴风魔镜之虚拟漫游(更新中。。。)
  20. python数据分析线上培训班

热门文章

  1. ubuntu display
  2. MyBatis框架学习笔记01:初探MyBatis实现简单查询
  3. 安卓案例:注册用户免启动时的广告页面
  4. 【codevs1068】乌龟棋noip10年TG----第二个A掉的钻石题
  5. mariadb 和mysql主从_Mariadb/Mysql 主从复制(1)
  6. 怎么将一个数字高低位互换_多彩数字 多彩童年——东城幼儿园玩具研究教学案例...
  7. python贪吃蛇源码_Python:游戏:贪吃蛇(附源码)
  8. 如何提高Unity Gear VR游戏性能
  9. 理解 Android 消息机制
  10. 201771010101白玛次仁《面向对象程序设计(java)》第十二周实验总结