zoukankan      html  css  js  c++  java
  • Python列表推导式

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

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

    简介

    列表推导是一种表达for-loop的python方式,该代码以单行代码附加到列表。

    [i for i in range(10) if i % 2 == 0]
    

    相同逻辑的for循环

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

    典型格式

    组成部分

    • 输出(可以是字符串、数字、列表或放在列表中的任何对象)
    • 声明
    • 条件过滤(可选)
    [[output value] for (i in iterable) if(filter conditions)]
    

    例子

    简单列表推导式

    问题陈述

    将每个数字平方,aList然后将结果存储为列表。

    for循环

    aList = [1,2,3,4,5]
    re = []
    for i in aList:
      re.append(i**2)
    

    列表推导式

    re = [i**2 for i in [1, 2, 3, 4, 5]]
    

    带条件过滤的列表推导式

    问题陈述

    aList中的偶数平方将结果存储在新列表中。

    for循环

    aList = [1,2,3,4,5]
    re = []
    for i in aList:
      if i % 2 == 0:
        re.append(i**2)
    

    列表推导式

    re = [i**2 for i in [1,2,3,4,5] if i % 2 == 0]
    

    if-else的列表推导式

    问题陈述

    aList中的偶数平方,奇数立方将结果存储在新的列表中。

    for循环

    aList = [1,2,3,4,5]
    re = []
    for i in aList:
      if i % 2 == 0:
        re.append(i**2)
      else:
        re.append(i**3)
    

    列表推导式

    [i**2 if i % 2 == 0 else i**3 for i in [1,2,3,4,5]]
    

    多个for循环列表推导式

    问题陈述

    展开矩阵,仅保留偶数。

    for循环

    matrix = [[1,2,3,4],[5,6,7,8]]
    re = []
    for row in matrix:
        for i in row:
            if i % 2 == 0:
                re.append(i)
    

    列表推导式

    matrix = [[1,2,3,4],[5,6,7,8]]
    [i for row in matrix for i in row if i % 2 == 0]
    

    成对输出(元组)

    问题陈述

    对于bList中的每个元素,在aList中的位置。以元组列表形式表示。

    for循环

    aList = [0,1,2,3,4,5,6,7,8,9]
    bList = [1,2,3,3,4,6,7,7]
    re = []
    for i in bList:
      re.append((i, aList.index(i)))
    

    列表推导式

    [(i, aList.index(i)) for i in bList]
    

    成对输出(字典)

    问题陈述

    对于bList中的每个元素,在aList中的位置。以字典形式表示。

    for循环

    aList = [0,1,2,3,4,5,6,7,8,9]
    bList = [1,2,3,3,4,6,7,7]
    re = {}
    for i in bList:
      re[i]=aList.index(i)
    

    列表推导式

    {i:aList.index(i) for i in bList}
    
  • 相关阅读:
    介绍Shiro Annotation及Shiro标签的用法
    SpringMVC+Apache Shiro+JPA(hibernate)案例教学(四)基于Shiro验证用户权限,且给用户授权
    SpringMVC+Apache Shiro+JPA(hibernate)案例教学(一)整合配置
    Spring MVC之@RequestMapping 详解
    vimrc
    sk_buff深度解析
    ieee80211ax简介
    新基地
    dos格式迭代转为unix
    ath10k MAC地址
  • 原文地址:https://www.cnblogs.com/mephisto03/p/12259768.html
Copyright © 2011-2022 走看看