zoukankan      html  css  js  c++  java
  • 如何理解列表推导式

    a= []
    for i in range(10):
      if i %2 == 0:
        a.append(i)
    ===> [ i for i in range(10) if i % 2 ==0]

    所以列表推导式的要素有3个

    1)for 循环

    2)被添加的元素

    3)条件

    限制:

    1)  条件:只有一个出口,没有else 

    2) 被添加的元素也只有一个出口

    举例1。

    x = [[1, 2], [3, 4], [5, 6]]
    # 要求提取偶数元素,并开方
    
    result = [i ** 2 for a in x for i in a if i % 2 == 0]
    print(result)
    [4, 16, 36]

    2。

    x = [[1, 2], [3, 4], [5, 6], 10]
    
    
    result = [i  for a in x if isinstance(a, list) for i in a]
    print(result)

    [1, 2, 3, 4, 5, 6]

    关注由于只有1个出口,所以没有else,但是可不可以结合三元表达式呢

    3。

    example2 = [[1,2,3],[4,5,6],[7,8,9],[10]]
    exmaple5 = [j**2 for i in example2 if len(i)>1 for j in i if j%2 == 0]
    print(exmaple5)

    实际上可以转换成

    exmaple5=[]
    for i in example2:
        if len(i)>1:
            for j in i:
                if j%2 == 0:
                    exmaple5.append(j**2)
    print(exmaple5)

    所以可以看出列表表达式只有一个元素出口,三元表达式可以增加一个条件 但是只能单线下传,不能else

  • 相关阅读:
    vs2015编译各种库
    回测分析软件
    交易平台
    策略框架
    期货homes平台以及仿ctp接口
    k线中转器
    期货数据服务器以及取数据接口
    c++ 二叉树的遍历(迭代,递归)
    c++实现单向链表的一些操作
    numpy操作
  • 原文地址:https://www.cnblogs.com/vincent-sh/p/13052404.html
Copyright © 2011-2022 走看看