当前位置 主页 > 网站技术 > 代码类 > 最大化 缩小

    python列表推导式入门学习解析

    栏目:代码类 时间:2019-12-02 18:07

    这篇文章主要介绍了python列表推导式入门学习解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    一.什么是推导式

    推导式是从一个或者多个迭代器快速简洁地创建数据类型的一种方法,它将循环和条件判断结合,从而避免语法冗长的代码,提高代码运行效率。能熟练使用推导式也可以间接说明你已经超越了python初学者的水平。

    报错

    二.条件推导式

    1.语法

    '''
    value1:如果条件表达式condition成立,返回value1 ; 如果条件表达式不成立,返回value2 ;
    condition:条件表达式
    Value2:如果条件表达式condition成立,返回value1 ; 如果条件表达式不成立,返回value2 ;
    '''
    value1 if condition else Value2

    2.实战练习

    假如有这样一个需要:判断一个数字是奇数还是偶数?

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:何以解忧
    @Blog(个人博客地址): shuopython.com
    @WeChat Official Account(微信公众号):猿说python
    @Github:www.github.com
     
    @File:python_list.py
    @Time:2019/9/30 20:45
     
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    """
     
    # 新手代码
    x = 10
    if x%2 == 0:
      print("新手说:x是偶数")
    else:
      print("新手说:x是奇数")
     
    # 老司机
    x = 15
    print("老司机说:x是偶数") if x%2 == 0 else print("老司机说:x是奇数")

    输出结果:

    新手说:x是偶数

    老司机说:x是奇数

    观察上面代码可以看出来,选手一(新手)一共占用了5行代码,而选手二(老司机)完成同样一个功能仅仅只需要两行,这就是性价比,往往这就是职场上鉴别工作能力/升职加薪的细节。

    三.列表推导式

    列表推导式是条件推导式和循环一起配合使用,并返回一个列表,并且整个表达式需要在[]内,因为返回值也是列表。

    1.语法

    '''
    语法一:
      exp1:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回exp1;条件表达式不成立则不返回
      x:for循环中变量
      data:一个序列(比如:列表/元组/字符串等)
      condition:条件表达式
    '''
     
    [exp1 for x in data if condition]
     
    '''
    语法二:
      exp1:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回exp1;条件表达式不成立则返回exp2
      condition:条件表达式
      exp2:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回exp1;条件表达式不成立则返回exp2
      x:for循环中变量
      data:个序列(比如:列表/元组/字符串等)
      
    '''
     
    [exp1 if condition else exp2 for x in data]

    2.实战练习

    需求一:获取0~20的所有偶数并且乘以10,并返回所有计算之后的结果。示例代码如下:(使用列表推导式语法一实现)

    '''
    1.因为是获取0~20,包括20,所以使用range(0,21)
    2.x*10 等价 语法一中的exp1
    3.x%2 == 0 等价 语法一中的条件表达式condition
    4.range(0,21) 等价 语法一中的data(序列)
    '''
     
    list1 = [x*10 for x in range(0,21) if x%2 == 0]
    print(list1)
    print(type(list1))

    输出结果:

    [0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200]
    <class 'list'>

    需求二:将0~20的偶数乘以10,奇数乘以100,并返回所有计算之后的结果。示例代码如下:(使用列表推导式语法二实现)