python推导式

Python推导式

1. 推导式概念

  推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导。

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式

2. 三种推导式原理相同,唯列表推导式应用最广泛。

  • 列表推导式

    • 基本格式

      1  v1=[i for i in 可迭代对象]
      2  v2=[i for i in 可迭代对象 if 条件] #条件为true才进行append
      3 4  v1=[i for i in range(10)]
      5  print(v1) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      6 7  v2=[i for i in range(10) if i >5]
      8  print(v2) #[6, 7, 8, 9]
    • 高级格式

       1  v3=[lambda :100+i for i in range(10)]
       2  print(v3[2]())  #109 ,v3在循环过程中函数一直没有执行,所有最后的列表中所有的值都是 lambda:100+9
       3  4  v4=[lambda x:x*i for i in range(10)]
       5  print(v4[0](2)) #18  ,v4在循环过程中,lambda函数没有执行,最终列表所有的值都是lambda x:x*9
       6  7  def num():
       8      #num()=[lambda x:x*3,lambda x:x*3,lambda x:x*3lambda x:x*3]
       9      return [lambda x:i*x for i in range(4)] 
      10  print([ m(2) for  m in num() ]) #结果是[6,6,6,6]
  • 集合推导式

    • 基本格式

      1  v1={i for i in 可迭代对象}
      2  v2={i for i in 可迭代对象 if 条件} #条件为true才进行append
      3 4  v1={i for i in range(10)}
      5  print(v1) #{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  • 字典推导式

    • 基本格式

      1  v1={key:value  for i in 可迭代对象}
      2  v2={i for i in 可迭代对象 if 条件} #条件为true才进行append
      3 4  v1={'key'+'%s'%i:i for i in range(5)}
      5  print(v1)  #{'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4}

 

posted @ 2019-07-19 15:31  PlayOn  阅读(386)  评论(0编辑  收藏  举报