原文链接: python for if

上一篇: python qq 聊天记录词云制作

下一篇: python numpy

for...[if]...构建List (List comprehension)
1.简单的for...[if]...语句

Python中,for...[if]...语句一种简洁的构建List的方法,从for给定的List中选择出满足if条件的元素组成新的List,其中if是可以省略的。下面举几个简单的例子进行说明。

>>> a=[12,3,4,6,7,13,21]
>>> newList =[x forx ina]
>>> newList
[12,3,4,6,7,13,21]
>>> newList2 =[x forx ina ifx%2==0]
>>> newList2
[12,4,6]

?

省略if后,newList构建了一个与a具有相同元素的List。但是,newList和a是不同的List。执行b=a,b和newList是不同的。newList2是从a中选取满足x%2==0的元素组成的List。如果不使用for...[if]..语句,构建newList2需要下面的操作。

>>> newList2=[]
>>>forx ina:
... ifx %2==0:
...    newList2.append(x)
>>> newList2
[12,4,6]

?

显然,使用for...[if]...语句更简洁一些。

2.嵌套的for...[if]...语句
嵌套的for...[if]...语句可以从多个List中选择满足if条件的元素组成新的List。下面也举几个例子。

>>>a=[12,3,4,6,7,13,21]
>>>b=['a','b','x']
>>>newList=[(x, y) forx ina fory inb]
>>>newList
[(12,'a'), (12,'b'), (12,'x'), (3,'a'), (3,'b'), (3,'x'), (4,'a'), (4,'b'), (4,'x'), (6,'a'), (6,'b'), (6,'x'), (7,'a'), (7,'b'), (7,'x'), (13,'a'), (13,'b'), (13,'x'), (21,'a'), (21,'b'), (21,'x')]
>>>newList2=[(x, y) forx ina fory inb ifx%2==0and y<'x']
>>>newList2
[(12,'a'), (12,'b'), (4,'a'), (4,'b'), (6,'a'), (6,'b')]

?

嵌套的for...[if]...语句与多重for语句相当,最前面的for语句是最外层的循环。

善用python的else子句
在日常coding中,分支语句的使用非常普遍,经常会根据是否满足一定的条件对代码执行的逻辑进行一些控制,所以大家对if[elif[else]]一定不会陌生。分支语句中的else子句在其它的条件不满足的时候会被执行到,适当的使用分支语句能够让我们的代码逻辑更加的丰富。
在分支语句中使用else子句在一些常见的编程语言中的用法基本相同,类似于提供了一条默认的执行路径,配合if等条件判断语句使用,相比其它的编程语言(c#, java, js等)在python中,else有一些特殊的用法,配合for, while等循环语句使用,甚至还能配合异常处理try except语句进行使用,能够让我们的代码更加的简洁。

1.配合for/while循环语句使用
在for循环语句的后面紧接着else子句,在循环正常结束的时候(非return或者break等提前退出的情况下),else子句的逻辑就会被执行到。先来看一个例子:

defprint_prime(n):fori inxrange(2, n):# found = Trueforj inxrange(2, i):ifi %j ==0:# found = False breakelse:print"{} it's a prime number".format(i)# if found:# print "{} it's a prime number".format(i)
print_prime(7)

结果:

2 it's a prime number
3 it's a prime number
5 it's a prime number

一个简单打印素数的例子,判断某个数字是否是素数的时候需要遍历比它自己小的整数,任何一个满足整除的情况则判断结束,否则打印这是一个素数的info,有了else的加持,整个例子的逻辑相当的“self-expressive”,如同伪代码一般的好理解而且相比在判断整除的时候设置标志值然后在函数的结尾处判断标志值决定是否打印数字时素数的消息,代码更简洁没有那么多要描述如何做的“过程式”准备工作。

ps: 大家可以把例子中的被注释代码运行对比下效果。

2.配合 try except错误控制使用
在异常处理语句中,else有相似的用法,当try代码块没有抛出任何的异常时,else语句块会被执行到。

defmy_to_int(str_param):try:printint(str_param)exceptValueError:print'cannot convert {} to a integer'.format(str_param)else:print'convert {} to integer successfully'.format(str_param)
my_to_int("123")
my_to_int("me123")

结果:

123
convert 123 to integer successfully
cannot convert me123 to a integer

?

如打印日志所示,在转换成功未发生错的的时候,else语句里的逻辑会被执行,当然这个例子可能并没有什么太多的实际的用处,但大致能说明else在错误处理中的用处:简化逻辑,避免使用一些标志值就能够准确把握是否发生错误的情况来做一些实际的操作(比如在保存数据的时候如果发生错误,在else语句块中进行rollback的操作,然后紧接着还能加上finally语句完成一些清理操作。

善用else语句块能够让我们编写出更加简明,更加接近自然语言的语义的代码,当然也会更加的pythonic,细微之处大家可以慢慢体会。

a, b, c = 1, 2, 31.常规if a>b:c = aelse:c = b2.表达式c = a if a>b else b3.二维列表c = [b,a][a>b]4.传说是源自某个黑客c = (a>b and [a] or [b])[0]

python for if相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Python gRPC 安装

    1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...

最新文章

  1. 人生苦短,我要换Go!
  2. 笔面集锦:判断单链表里面是否有环及相关扩展题
  3. 看一遍就理解,图解单链表反转
  4. linux更改python版本链接
  5. HH SaaS电商系统的物流单设计
  6. 单片机c语言 i%3c%3c1,单片机C语言作业及上机习题及答案
  7. 大学生慕课第二周学习笔记
  8. 指针数组vs数组指针 指针函数vs函数指针
  9. sql 查询所有子节点示例
  10. 使用字符串修改彩票程序
  11. 20个常用模拟电路(详细分析)
  12. ENVI监督分类中SVM(支持向量机)工具
  13. keil 调试指针不跳转 0x00000000 0000 MOVS r0,r0 解决方案
  14. 数值积分求解卫星轨道长(Python)
  15. ps2模拟器linux,PS2模拟器PCSX
  16. 重庆云阳2021云中高考成绩查询,2021年云阳县高考状元是谁及其成绩名单
  17. 【数据湖Hudi-8-Hudi集成Flink-入门】
  18. 【收藏夹2020-2021】
  19. windows隐藏CMD窗口,使jar程序在后台执行
  20. 可以背在身后的机器人助你一臂之力

热门文章

  1. steam互联网项目是真是假?
  2. sharpfile文件和C#解析(基础知识准备)
  3. CANOpen-LSS-理论篇
  4. linux命令:df、du、free
  5. PLAN: 入门题目
  6. vue项目启动后设置默认谷歌浏览器打开
  7. RAC修改VIP地址
  8. 解决H5页面开发时iPhoneX手机底部和侧面白边问题。
  9. 用小优启动u盘启动盘制作工具v7.0安装winxp
  10. Android-MVP模式详解,经典好文