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

    前言

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

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

    列表(list)推导式

    语法

      out_express:  列表生成元素表达式,可以是有返回值的函数。
      for out_exp in input_list:  迭代input_list将out_exp传入out_express表达式中。
      condition:  条件表达式。
    variable = [out_express for out_exp in input_list condition]
    实例一:判断0-30列表元素被3整除
    
    multiples = [i for i in range(30) if i % 3 is 0]
    print(multiples)
    # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

    字典(dict)推导式

    语法

    '''
    语法一:
        key:字典中的key
        value:字典中的value
        dict.items():序列
        condition:条件表达式
        key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理 
        value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
    '''
    
    {key_exp:value_exp for key,value in dict.items() if condition}
    
    '''
    语法二:
        key:字典中的key 
        value:字典中的value 
        dict.items():序列 
        condition:条件表达式 
        key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理 
        value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理
        value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理
        
    '''
    
    {key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}

    实例一:获取字典中key值是小写字母的键值对

    dict1 = {"a":10,"B":20,"C":True,"D":"hello world","e":"python教程"}
    dict2 = {key:value for key,value in dict1.items() if key.islower()}
    print(dict2)
    # Output: {'a': 10, 'e': 'python教程'}

    实例二:大小key合并

    mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    mcase_frequency = {
      k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
      for k in mcase.keys()
      if k.lower() in ['a','b']
    }
    print mcase_frequency
    # Output: {'a': 17, 'b': 34}

    集合(set)推导式

    语法
      out_express:  列表生成元素表达式,可以是有返回值的函数。
      for out_exp in input:  迭代input将out_exp传入out_express表达式中。
    out_exp:  迭代变量。
    input: 可迭代对象,可以是列表,原则、字典、集合以及range区间。 condition:  条件表达式。 variable
    = {out_express for out_exp in input_list condition}

    实例一:

    squared = {x**2 for x in [1, 1, 2]}
    print(squared)
    # Output: set([1, 4])



  • 相关阅读:
    LeetCode_222.完全二叉树的节点个数
    LeetCode_219.存在重复元素 II
    LeetCode_217.存在重复元素
    LeetCode_215.数组中的第K个最大元素
    LeetCode_21.合并两个有序链表
    LeetCode_206.反转链表
    LeetCode_205.同构字符串
    LeetCode_202.快乐数
    LeetCode_20.有效的括号
    LeetCode_2.两数相加
  • 原文地址:https://www.cnblogs.com/-wenli/p/14103532.html
Copyright © 2011-2022 走看看