python代码简写(推导式 if else for in)
2024-08-28 04:35:49
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,在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 ),
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为偶数时返回
//遍历a,在i为偶数时返回
生成字典:c = { i:i**i for i in a if i%2==0 }
//遍历a,在i为偶数时返回
//遍历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和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]
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,如果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
最新文章
- mysql 获取权限
- WinCE6.0多国语言软键盘
- 不要迷恋那些没技术含量的Linux发行版
- java基本概念
- [搜片神器]BT种子下载超时很多的问题分析
- mac上的键盘生活——输入法键位设置小技巧以及去掉自带输入法
- redundant 行记录格式
- windows下eclipse跑junit报错:CreateProcess error=206
- css3转盘抽奖
- OpenStack中memcached的使用和实现
- Web Service进阶(一)运行原理
- 【English Teradata】名称缩写
- OkHttp之Interceptor
- 【loj6029】「雅礼集训 2017 Day1」市场&;&;【uoj#228】基础数据结构练习题
- ionic3开发ios端
- React-router4 第九篇 Ambiguous Matches 模糊匹配
- mysql 5.17 的update失败问题
- IDEA想创建package,却只有directory 解决办法
- QT 运行崩溃:The inferior stopped because it received a signal from the Operating System
- Windows应急响应操作手册