Python优雅写法,让你写代码的效率翻N倍,附赠400集学习教程
我们都知道,Python 的设计哲学是「优雅」、「明确」、「简单」。这也许很多人选择 Python 的原因。但是我收到有些伙伴反馈,他写的 Python 并不优雅,甚至很臃肿,那可能是你的姿势不对哦!今天就给大家带来 Python 语句的十大优雅之法。
为多个变量赋值
有时,有多个变量需要赋值,这时你会怎么赋值呢?
常规方法:
常规方法是给变量逐个赋值。
a = 0 b = 1 c = 2
优雅方法:
直接按顺序对应一一赋值。
a, b, c = 0, 1, 2
序列解包
需要取出列表中的元素。
常规方法:
一般我们知道可以通过下标获取具体元素。
info = ['brucepk', 'man', 'python'] name = info[0] sex = info[1] tech = info[2] print(name,sex,tech) # 结果 brucepk man python
优雅方法:
给出对应变量接收所有元素。
info = ['brucepk', 'man', 'python'] name,sex,tech = info print(name,sex,tech) # 结果 brucepk man python
优雅你的判断语句
我们用判断语句来定义一个绝对值函数。
常规方法:
x = -6 if x < 0: y = -x else: y = x print(y) # 结果 6
优雅方法:
x = -6 y = -x if x<0 else x print(y) # 结果 6
区间判断
使用 and 连续两次判断的语句,条件都符合时才执行语句。
常规方法:
score = 82 if score >=80 and score < 90: level = 'B' print(level) # 结果 B
优雅方法:
使用链式判断。
score = 82 if 80 <= score < 90: level = 'B' print(level) # 结果 B
多个值符合条件判断
多个值任意一个值符合条件即为 True 的情况。
常规方法:
num = 1 if num == 1 or num == 3 or num == 5: type = '奇数' print(type) # 结果 奇数
优雅方法:
使用关键字 in,让你的语句更优雅。
num = 1 if num in(1,3,5): type = '奇数' print(type) # 结果 奇数
判断是否为空
判断元素是空还是非空。
常规方法:
一般我们想到的是 len() 方法来判断元素长度,大于 0 则为非空。
A,B,C =[1,3,5],{},'' if len(A) > 0: print('A 为非空') if len(B) > 0: print('B 为非空') if len(C) > 0: print('C 为非空') # 结果 A 为非空
优雅方法:
在之前的文章 零基础学 python 之 if 语句 中讲过,if 后面的执行条件是可以简写的,只要条件 是非零数值、非空字符串、非空 list 等,就判断为 True,否则为 False。
A,B,C =[1,3,5],{},'' if A: print('A 为非空') if B: print('B 为非空') if C: print('C 为非空') # 结果 A 为非空
多条件内容判断至少一个成立
常规方法:
用 or 连接多个条件。
math,English,computer =90,80,88 if math<60 or English<60 or computer<60: print('not pass') # 结果 not pass
优雅方法:
使用 any 语句。
math,English,computer =90,59,88 if any([math<60,English<60,computer<60]): print('not pass') # 结果 not pass
多条件内容判断全部成立
常规方法:
使用 and 连接条件做判断。
math,English,computer =90,80,88 if math>60 and English>60 and computer>60: print('pass') # 结果 pass
优雅方法:
使用 all 方法。
math,English,computer =90,80,88 if all([math>60,English>60,computer>60]): print('pass') # 结果 pass
遍历序列的元素和元素下标
常规方法:
使用 for 循环进行遍历元素和下标。
L =['math', 'English', 'computer', 'Physics'] for i in range(len(L)): print(i, ':', L[i]) # 结果 0 : math 1 : English 2 : computer 3 : Physics
优雅方法:
使用 enumerate 函数。
L =['math', 'English', 'computer', 'Physics'] for k,v in enumerate(L): print(k, ':', v) # 结果 0 : math 1 : English 2 : computer 3 : Physics
循环语句优化
之前的文章 零基础学 Python 之列表生成式 中讲过列表生成时的用法,举例:生成 [1x1,2x2,3x3,4x4,5x5]。
常规方法:
使用简单的 for 循环可以达到目的。
L = [] for i in range(1, 6): L.append(i*i) print(L) #结果: [1, 4, 9, 16, 25]
优雅方法:
使用列表生成式,一行代码搞定。
print([x*x for x in range(1, 6)]) #结果: [1, 4, 9, 16, 25]
Python 这些优雅的写法学会了吗?自己赶紧动手试试吧。
柠檬这里还有由北京尚学堂高淇老师亲自录制,400集python全栈入门到精通的python全套+前端+4个实战项目!小伙伴们快快领取学习吧!
Python作为一种编程语言,被称为“胶水语言”,更被拥趸们誉为“最美丽”的编程语言,从云端到客户端,再到物联网终端,无所不在,同时还是人工智能优选的编程语言。
硬件:
第一篇:操作系统简介
第二篇:操作系统
linux基础:
第一篇:初始Linux
第二篇:基本使用
第三篇:Linux进阶
python基础:
第一篇:python基础大纲
第二篇:变量与交互
第三篇:快捷键
第四篇:基本数据类型,基本二,字符串,列表,元组,字典,集合
第五篇:基础条件和循环
第六篇:循环,元组,字典列表代码整理,计算器小程序,一大波作业来袭
第七篇:第六篇-练习代码
第八篇:集合
第九篇:字典
第十篇:元组
第十一篇:列表
第十二篇:字符串
第十三篇:日期格式化
python-文件处理:
第一篇:字符编码、文件处理
python-函数:
第一篇:初始函数
第二篇:函数进阶
第三篇:装饰器
第四篇:递归与二分法
第五篇:内置函数思维导图
第六篇:迭代器、生成器、列表推倒。。
第七篇:eval一个神器的函数
python-模块和包:
第一篇:模块导入和包
第二篇:常用的几个模块
第三篇;摘要算法模块
第四篇:logging模块
第五篇:configparser模块
python-面向对象:
第一篇:初始面向对象
第二篇:面向对象三大特性
第三篇:property-staticmethod-classmethod
第四篇:神奇的反射
第五篇:面向对象拓展
python-异常处理:
第一篇:异常处理
python-网络编程:
第一篇:初始socket
第二篇:客户端服务端一、客户端服务端二
python-进程、线程、协程:
第一篇:线程与进程
第二篇:并发编程
第三篇:多进程模拟抢票
第五篇:进程的队列
第六篇:互斥锁
第七篇:开启线程的两种方式,线程queue
第八篇:线程与进程的两种应用
第九篇:死锁与递归锁,定时器
第十篇:event模式数据库链接
第十一篇:进程池与线程池,统一进程的两个任务切换问题
第十二篇:同步与异步
第十三篇:阻塞IO,非阻塞IO,多路复用
第十四篇:进程、线程、协程终极版
数据库-MySQL-MongoDB:
第一篇:MySQL--数据库基本操作一,基本操作二
第二篇:MySQL--进阶操作(了解即可)
第三篇:MySQL--经典习题
第四篇:MongoDB
前端:HTML、css、JavaScript、jquery、vue.js:
第一篇:HTML
第二篇:css
第三篇:JavaScript
第四篇:jQuery,跨域实例
第五篇:vue.js入门,项目结构介绍,es6入门
第六篇:vue.js详细的操作实例一
第七篇:vue-router篇
第八篇:快速上手npm
第九篇:初识webpack
python-Django框架:
第一篇:安装以及介绍--Django生命周期--一些命令----笔记---笔记2--笔记3
第二篇:初始django,MTV模型,请求方式测试
第三篇:简单的登录注册,admin管理,权限管理测试
第四篇:模板层,练习,模板继承,csrf跨站
第五篇:基于MySQL的图书管理,图书管理增删改,加了cookie的图书管理
第五篇:orm查询,查询二
第六篇:cookie验证,cookie与session
第七篇:diy自己的权限系统
第八篇:Django-ajax,,跨站请求伪造,jQuery-serizlize的用法
第九篇:文件上传,验证码,Django缓存问题
第十篇:Django-rest-framework,部分总结
第十一篇:content-type
Git-版本控制:
第一篇:Git入门
第二篇:git操作演示
python-flask框架:
第一篇:flask各种小东西
第二篇:flask开发框架,配置文件
第三篇:单例模式
第四篇:flask-session源码剖析
第五篇:flask-session组件
第五篇:信号
第六篇:sqlalchemy操作,操作2,详细,,命令使用
第七篇:flask-script
redis:
第一篇:基本使用
爬虫相关
第一篇:爬取校花网资源
第二篇:请求库-request
第三篇:解析库-re-beautifulsoup
第四篇:存储库-MySQL(见上面MySQL),MongoDB
第五篇:github绵密登录,自动投递简历
第六篇:提高爬虫性能,爬虫性能测试代码
第七篇:爬虫框架scrapy1,爬虫框架scrapy2
第八篇:爬取亚马逊商品信息,爬取网络小说
第九篇:分布式爬虫 ---
项目练习:
第一篇:基于bootstrap搭建静态网站
第二篇:基于bootstrap+MySQL搭建动态网站
第三篇:基于HTML,css,jQuery,JavaScript,MySQL搭建博客系统
第四篇:基于django做权限控制
第五篇:基于django做增删改查组件,分页器组件
第五篇:为公司做crm资产管理
第六篇:基于flask做权限控制
第七篇:爬虫项目
第八篇:路飞学成搭建
源码剖析:
第一篇:flask
第二篇:django
第三篇:django-restframework源码流程分析
金融与算法:
第一篇:金融介绍
第二篇:量化投资与python
第三篇:ipython基础认识
第四篇:numpy数组运算,事例代码
第五篇:pandas数据分析,事例代码
第六篇:matplotlib绘图可视化,事例代码
第七篇:金融分析实例(了解)
第八篇;算法基础(理论),实例代码
第九篇:排序lowB三人组,示例代码
第十篇:NB三人组,示例代码
第十一篇:算法进阶、其它(了解)
第十二篇:数据结构、数据结构实例代码
第十三篇:设计模式、设计模式实例代码