for - else

什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看:

for i in [1,2,3,4]:

print(i)

else:

print(i, '我是else')

1

2

3

4

4 我是else

如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍:

for i in [1,2,3,4]:

if i > 2:

print(i)

else:

print(i, '我是else')

3

4

4 我是else

那么,如何拆散 for 和 else 这对冤家呢?只有当 for 循环被 break 语句中断之后,才会跳过 else 语句:

for i in [1,2,3,4]:

if i>2:

print(i)

break

else:

print(i, '我是else')

3

* 和 **

有没有发现,星(*)真是一个神奇的符号!想一想,没有它,C语言还有啥好玩的?同样,因为有它,Python 才会如此的仪态万方、风姿绰约、楚楚动人!Python 函数支持默认参数和可变参数,一颗星表示不限数量的单值参数,两颗星表示不限数量的键值对参数。

我们还是举例说明吧:设计一个函数,返回多个输入数值的和。我们固然可以把这些输入数值做成一个list传给函数,但这个方法,远没有使用一颗星的可变参数来得优雅:

>>> def multi_sum(*args):

s = 0

for item in args:

s += item

return s

>>> multi_sum(3,4,5)

12

Python 函数允许同时全部或部分使用固定参数、默认参数、单值(一颗星)可变参数、键值对(两颗星)可变参数,使用时必须按照前述顺序书写。

>>> def do_something(name, age, gender='男', *args, **kwds):

print('姓名:%s,年龄:%d,性别:%s'%(name, age, gender))

print(args)

print(kwds)

>>> do_something('xufive', 50, '男', 175, 75, math=99, english=90)

姓名:xufive,年龄:50,性别:男

(175, 75)

{'math': 99, 'english': 90}

三元表达式

熟悉 C/C++ 的程序员,初上手 python 时,一定会怀念经典的三元操作符,因为想表达同样的思想,用python 写起来似乎更麻烦。比如:

>>> y = 5

>>> if y < 0:

print('y是一个负数')

else:

print('y是一个非负数')

y是一个非负数

其实,python 是支持三元表达式的,只是稍微怪异了一点,类似于我们山东人讲话。比如,山东人最喜欢用倒装句:打球去吧,要是不下雨的话;下雨,咱就去自习室。翻译成三元表达式就是:

打球去吧 if 不下雨 else 去自习室

来看看三元表达式具体的使用:

>>> y = 5

>>> print('y是一个负数' if y < 0 else 'y是一个非负数')

y是一个非负数

python 的三元表达式也可以用来赋值:

>>> y = 5

>>> x = -1 if y < 0 else 1

>>> x

1

with - as

with 这个词儿,英文里面不难翻译,但在 Python 语法中怎么翻译,我还真想不出来,大致上是一种上下文管理协议。作为初学者,不用关注 with 的各种方法以及机制如何,只需要了解它的应用场景就可以了。with 语句适合一些事先需要准备,事后需要处理的任务,比如,文件操作,需要先打开文件,操作完成后需要关闭文件。如果不使用with,文件操作通常得这样:

fp = open(r"D:\1.py", 'r')

try:

contents = fp.readlines()

finally:

fp.close()

如果使用 with - as,那就优雅多了:

>>> with open(r"D:\1.py", 'r') as fp:

contents = fp.readlines()

列表推导式

在各种稀奇古怪的语法中,列表推导式的使用频率应该时最高的,对于代码的简化效果也非常明显。比如,求列表各元素的平方,通常应该这样写(当然也有其他写法,比如使用map函数):

>>> a = [1, 2, 3, 4, 5]

>>> result = list()

>>> for i in a:

result.append(i*i)

>>> result

[1, 4, 9, 16, 25]

如果使用列表推导式,看起来就舒服多了:

>>> a = [1, 2, 3, 4, 5]

>>> result = [i*i for i in a]

>>> result

[1, 4, 9, 16, 25]

事实上,推导式不仅支持列表,也支持字典、集合、元组等对象。

列表索引的各种骚操作

Python 引入负整数作为数组的索引,这绝对是喜大普奔之举。想想看,在C/C++中,想要数组最后一个元素,得先取得数组长度,减一之后做索引,严重影响了思维的连贯性。Python语言之所以获得成功,我个人觉得,在诸多因素里面,列表操作的便捷性是不容忽视的一点。请看:

>>> a = [0, 1, 2, 3, 4, 5]

>>> a[2:4]

[2, 3]

>>> a[3:]

[3, 4, 5]

>>> a[1:]

[1, 2, 3, 4, 5]

>>> a[:]

[0, 1, 2, 3, 4, 5]

>>> a[::2]

[0, 2, 4]

>>> a[1::2]

[1, 3, 5]

>>> a[-1]

5

>>> a[-2]

4

>>> a[1:-1]

[1, 2, 3, 4]

>>> a[::-1]

[5, 4, 3, 2, 1, 0]

如果说,这些你都很熟悉,也经常用,那么接下来这个用法,你一定会感觉很神奇:

>>> a = [0, 1, 2, 3, 4, 5]

>>> b = ['a', 'b']

>>> a[2:2] = b

>>> a

[0, 1, 'a', 'b', 2, 3, 4, 5]

>>> a[3:6] = b

>>> a

[0, 1, 'a', 'a', 'b', 4, 5]

lambda函数

lambda 听起来很高大上,其实就是匿名函数(了解js的同学一定很熟悉匿名函数)。匿名函数的应用场景是什么呢?就是仅在定义匿名函数的地方使用这个函数,其他地方用不到,所以就不需要给它取个阿猫阿狗之类的名字了。下面是一个求和的匿名函数,输入参数有两个,x和y,函数体就是x+y,省略了return关键字。

>>> lambda x,y: x+y

at 0x000001B2DE5BD598>

>>> (lambda x,y: x+y)(3,4) # 因为匿名函数没有名字,使用的时候要用括号把它包起来

匿名函数一般不会单独使用,而是配合其他方法,为其他方法提供内置的算法或判断条件。比如,使用排序函数sorted对多维数组或者字典排序时,就可以指定排序规则。

>>> a = [{'name':'B', 'age':50}, {'name':'A', 'age':30}, {'name':'C', 'age':40}]

>>> sorted(a, key=lambda x:x['name']) # 按姓名排序

[{'name': 'A', 'age': 30}, {'name': 'B', 'age': 50}, {'name': 'C', 'age': 40}]

>>> sorted(a, key=lambda x:x['age']) # 按年龄排序

[{'name': 'A', 'age': 30}, {'name': 'C', 'age': 40}, {'name': 'B', 'age': 50}]

再举一个数组元素求平方的例子,这次用map函数:

>>> a = [1,2,3]

>>> for item in map(lambda x:x*x, a):

print(item, end=', ')

1, 4, 9,

优雅的python_优雅的Python相关推荐

  1. python手机版怎么用-如何优雅的在手机上进行Python编程

    原标题:如何优雅的在手机上进行Python编程 很多人都在学习Python,但是我们往往在清香于忙碌工作的同时的时候,很少有空余时间去学习py.今天就给大家推荐一个运行在android手机上的开发软件 ...

  2. 手机上有没有学python的软件-如何优雅的在手机上进行Python编程

    原标题:如何优雅的在手机上进行Python编程 很多人都在学习Python,但是我们往往在清香于忙碌工作的同时的时候,很少有空余时间去学习py.今天就给大家推荐一个运行在android手机上的开发软件 ...

  3. 手机python代码写好了怎么运行-如何优雅的在手机上进行Python编程

    原标题:如何优雅的在手机上进行Python编程 很多人都在学习Python,但是我们往往在清香于忙碌工作的同时的时候,很少有空余时间去学习py.今天就给大家推荐一个运行在android手机上的开发软件 ...

  4. python 手机编程termux_如何优雅的在手机上进行Python编程?

    其实谈不上优雅,编程还是老老实实在电脑编程更实用,手机只是某种程度上做一些便捷性的操作. 回到主题,下面介绍两个常用的Python编程工具. 第一款:Termux Termux是一个安卓手机的 Lin ...

  5. python优雅编程_Python优雅编程——Collections模块中的高性能数据类型

    Python中内置了4 种数据类型,列表(List),元组(Tuple),集合(Set),字典(Dict).这些数据类型都有其各自的特性,但是有些特性,比如字典无序,在一定程度上对数据类型的使用产生了 ...

  6. python优雅编程视频_日常 Python 编程优雅之道

    3 个可以使你的 Python 代码更优雅.可读.直观和易于维护的工具. Python 提供了一组独特的工具和语言特性来使你的代码更加优雅.可读和直观.为正确的问题选择合适的工具,你的代码将更易于维护 ...

  7. python优雅代码大全_10个Python技巧帮你写出更优雅的代码

    阅读本文需要 2 分钟,公众号 somenzz ,欢迎学习 Python 的朋友订阅. 现在写代码的门槛非常低了,少儿都开始编程了,但从代码的风格一眼看出编码水平.是的,写代码是容易的,写出易读的代码 ...

  8. 优雅地实现if-else(python版)

    if-else版: def if_else(operator,x,y):if operator=='mul':return x*yelif operator=='add':return x+yelif ...

  9. 干货 |如何优雅的在手机上进行Python编程

    大家都知道有安卓上有一个QPython,可以写Python,但是QPython已经好久没有更新了,官方也貌似没有更新的打算了.今天,给大家推荐另一款安卓工具.QPython支持的库也有限,不能很好的满 ...

最新文章

  1. Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
  2. webpack 3.1 升级webpack 4.0
  3. 让思考成为一种习惯:一位软件工程专业学生的大学生涯规划
  4. Git新建临时分支进行开发后合并至master
  5. ECharts 雷达图在类目值下面显示数值
  6. 小程序怎么打出横线效果_成都小程序开发:哪些因素会影响小程序的运营效果?...
  7. Halcon算子学习:图像阈值分割-threshold、binary_threshold、dyn_threshold算子
  8. android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例
  9. 【华为云技术分享】开发团队中的任务没人领取,你头疼吗?
  10. oracle查询时定义临时的变量,oracle学习笔记之临时变量的使用
  11. Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件
  12. java 二叉树_拼多多Java开发1234面:二叉树+负载均衡+MySQL+Redis+高并发
  13. Linux应用调试-strace命令
  14. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_6 Mybatis中使用Dao实现类的执行过程分析-增删改方法...
  15. Win10显示文件扩展名
  16. 【特征提取】基于matlab熵函数语音端点检测【含Matlab源码 1764期】
  17. AMOS问卷数据建模前传【SPSS 052期】
  18. 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
  19. 【数字信号处理】FIR 滤波器基础理论
  20. 心电电路算法滤波_心电仪滤波

热门文章

  1. Jmeter分布式集群
  2. 随机投点法计算定积分java_科学网—0026:蒙特卡洛求定积分三种方法的理解 - 何成文的博文...
  3. 远程开关机神器Wake On LAN,免费有中文版
  4. 双十一好物推荐:2022年好用的数码好物分享
  5. 电力系统分析-功率因素
  6. 对表格的td标签执行点击事件
  7. 判断当前设备是否为移动端/手机/IOS
  8. php 趋势图,PHP实现股票趋势图和柱形图
  9. 我的世界服务器无限刷雪傀儡,我的世界:都说雪傀儡百无一用?它建立的安全区堪比和平模式...
  10. Nexus9刷机步骤,google其他nexus手机或者平板设备步骤类似