牛骨文教育服务平台(让学习变的简单)
博文笔记

Python 列表推导式 if else for in join with as

创建时间:2017-03-21 投稿人: 浏览次数:6921
c = a if a>b else b    //如果a>b返回a,否则返回b

>>> a = 1
>>> b = 2
>>> c = a if a>b else b
>>> c
2
c = [b,a][a>b]  //如果a>b返回a,否则返回b
>>> a = 1
>>> b = 2
>>> c = [b,a][a>b]
>>> c
2
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"
class Sample:
    def __enter__(self):
        return self

    def __exit__(self, type, value, trace):
        print "type:", type
        print "value:", value
        print "trace:", trace

    def do_something(self):
        bar = 1/0
        return bar + 10

#1、类Sample被实例化后,调用__enter__()方法,将返回值赋给as后的变量sample
#2、with语句下的语句sample.do_something()被执行
#3、语句执行完或者是出现异常时调用__exit__()方法        
with Sample() as sample:  
    sample.do_something()
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。