c = a if a>b else b    //如果a>b返回a,否则返回b
>>> a = 1
>>> b = 2
>>> c = a if a>b else b
>>> c
 
 
c = [ i for i in a if i%2==0 ]
 //遍历a,在i为偶数时返回
>>> a = [1,2,3]
>>> c = [i for i in a if i%2==0]
>>> c
[2]
注意当你用上述方式生成列表,但又不引用而只是作为临时参数时,为减少内存开销,应将sum( [ i for i in a if
i%2==0 ] )改成sum( i for i in a if i%2==0 ),
 
 
生成集合:c = { i for i in a if i%2==0 }
 //遍历a,在i为偶数时返回
生成字典:c = { i:i**i for i in a if i%2==0 }
 //遍历a,在i为偶数时返回
 
 
c = [i+j for i in a for j in b if i%2==0 and j%2==0]
 
 //同时嵌套遍历列表a和b,返回i和j同时为偶数时的和。其中for in a属于外层嵌套,for
in b属于内层
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [i+j for i in a for j in b if i%2==0 and
j%2==0]
>>> c
[6, 8]
 
 
 
c = [i if i%2==0 else 1 for i in a]
 //遍历a,如果i为偶数直接返回,否则直接返回1。此处if写在for前面要求必须有else项
>>> a = [1,2,3]
>>> c = [i if i%2==0 else 1 for i in a]
>>> c
[1, 2, 1]
 
 
 
a,b=b,a   //交换数据
>>> a=1
>>> b=2
>>> a,b=b,a
>>> a
2
>>> b
1
 
 
 
''.join['1','2']  //字符list的连接
>>> c = ''.join(['1','2'])
>>> c
'12'
 
转自:http://blog.csdn.net/qq_16234613/article/details/64441428
---------------------------------------------------------------------------------
推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种
 
1.列表推导式也叫列表解析式。
功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表
格式:用中括号括起来,中间用for语句,后面跟if语句用作判读,满足条件的传到for语句前面用作构建先的列表
[x**2 for item in item_list if item>2]
 
例子:
 
1 >>> li=[i*2 for i in range(10) if i % 2 == 0]
2 >>> print li
3  [0, 4, 8, 12, 16]
 
 
很明显,列表解析式最擅长的方式就是对整个列表分别做相同的操作,并且返回得到一个新的列表,并不会直接返回,需要赋值给变量
 
2.第二种是字典解析式,这个跟列表解析式的用法是差不多的,只不中括号该改成大括号,毕竟字典本身用的就是大括号。
例子:
 
1 #快速转换字典键值位置
2 >>> mca={"a":1, "b":2, "c":3, "d":4}
3 >>> dicts={v:k for k,v in mca.items()}
4 >>> print dicts
5 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
 
 
3.还有一种是集合推导式。
功能:集合推导式跟列表推导式差不多,都是对一个列表的元素全部执行相同的操作,
但集合是一种无重复无序的序列
区别:跟列表推到式的区别在于:1.不使用中括号,使用大括号;2.结果中无重复;3.结果是一个set()集合,集合里面是一个序列
 
1 >>> squared={i*2 for i in [1,1,2]}
2 >>> print squared
3 set([2, 4])
 
 
转自:https://www.cnblogs.com/cenyu/p/5718410.html

python代码简写(推导式 if else for in)的更多相关文章

  1. python基础——列表推导式

    python基础--列表推导式 1 列表推导式定义 列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形 2 列表推导式语法 基本格式如下: [expr for va ...

  2. Python生成器、推导式之前襟后裾

    生成器 函数体内有yield选项的就是生成器,生成器的本质是迭代器,由于函数结构和生成器结构类似,可以通过调用来判断是函数还是生成器,如下: def fun(): yield "我是生成器& ...

  3. python的各种推导式

    python的各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体 ...

  4. Python基础-列表推导式

    python中列表推导式有三种数据类型可用:列表,字典,集合 列表推导式书写形式: [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件] 1,列表推导式 ...

  5. python 3列表推导式的的一点理解!

    python 3列表推导式的的一点理解! Python的列表推导式对于新手来说一般都难以理解,简单看个例子: [x * x for x in range(1,100)] 上面是一个很简单的列表推导式, ...

  6. Python 入门之 推导式

    Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1.推导式 (1)列表推导式 : <1> 普通循环: [变量 for循环] print([i f ...

  7. python基础知识-8-三元和一行代码(推导式)

    python其他知识目录 1.三元运算(三目运算) 三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值格式:[on_true] if [expression] else [on_false]re ...

  8. Python函数——列表推导式、生成器与迭代器

    列表推导式 产生背景 现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现? 第一种方法: a = [1,3,4,6,7,7,8,9 ...

  9. Python 拓展之推导式

    写在之前 推导式是从一个或多个迭代器快速简洁的创建数据结构的一种办法,它可以将循环和条件判断结合,从而可以避免语法冗长的代码. 列表推导式 我在之前的文章中(零基础学习 Python 之 for 循环 ...

随机推荐

  1. @RequiresPermissionss是否可以填写多种权限标识,只要满足其一就可以访问?

    @RequiresPermissionss是否可以填写多种权限标识,只要满足其一就可以访问?  发布于 180天前  作者 qq_b02c4863  144 次浏览  复制  上一个帖子  下一个帖子 ...

  2. jsc

    之前发现一个神器,js代码测试脱离浏览器,mac终端也可以做到 调试js的时候,一般都是用浏览器的开发者工具,这里给大家推荐另外一种,抛开浏览器,在终端执行的方式,Mac内置了一个javascript ...

  3. 通过ODBC接口访问人大金仓数据库

      国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高:另一方面,国产软件目前普遍难用,性能不稳定,Bug ...

  4. C# 命名空间与语句

    C#采用命名空间(namespace)来组织程序.命名空间可以嵌套.using指示符可以用来简化命名空间类型的引用.using指示符有两种用法."using System;"语句可 ...

  5. Data Warehouse 简介

    数据仓库定义 数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受:数据仓库(Data Warehouse)是一个面 ...

  6. SpringBoot学习11:springboot异常处理方式1(自定义异常页面)

    SpringBoot 默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制.一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求.在 sprin ...

  7. 03-UI控件浏览

    UI控件浏览 可能用得上的UI控件 为了便于开发者打造各式各样的优秀app,UIKit框架提供了非常多功能强大又易用的UI控件 下面列举一些在开发中可能用得上的UI控件(红色表明最常用,蓝色代表一般, ...

  8. MySQL 5.7传统复制到GTID在线切换(一主一从)

    Preface       Classic replication is commonly used in previous version of MySQL.It's really tough in ...

  9. Docker自学纪实(六)搭建docker私有仓库

    docker的镜像仓库分两种:一种是从官方公有仓库拉取:还有就是自己搭建私有仓库.官方的镜像仓库是面对整个应用市场的:私有仓库一般用于公司内部,就是公司项目自身所需的镜像.搭建私有仓库有什么好处?私有 ...

  10. webpack最小化lodash

    lodash作为一个比较常用的前端开发工具集,在使用webpack进行vendor分离的实践中,会遇到将整个lodash文件分离到vendor.js的问题.这样会使vendor.js文件变得特别大. ...