当前位置 主页 > 网站技术 > 代码类 >

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

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

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

    输出结果:

    [0, 100, 20, 300, 40, 500, 60, 700, 80, 900, 100, 1100, 120, 1300, 140, 1500, 160, 1700, 180, 1900, 200]
    <class 'list'>

    3.效率对比

    可能有童鞋纳闷,我明明for循环就能实现的功能,为毛要用这鸟玩意推导式?

    使用列表推导式的效率远远高于for循环,可能执行一句print(“helloworld”)对于cpu而已只需要0.0002秒,你可能感觉不到差距,如果需要输出一亿次helloworld呢?往往细节觉得成败!

    假如有一个需求:将0~10000000(一亿)以内的所有整数存到列表中,对比一下列表推导式和for循环耗时情况:

    import time # 添加time模块,用于统计代码运行时间
     
    #一共添加10000000次数据到列表中
    total_num = 10000000
     
    #使用列表推导式
    start_time = time.time()
    list1 = [x for x in range(0,total_num)] # 列表推导式
    end_time = time.time()
    print("使用列表推导式耗时:{}秒".format(end_time-start_time))
     
    #使用普通for循环
    start_time = time.time()
    list2 = list()
    for x in range(0,total_num): # for循环
      list2.append(x)
    end_time = time.time()
    print("使用普通for循环耗时:{}秒".format(end_time-start_time))

    输出结果:

    使用列表推导式耗时:0.5455152988433838秒

    使用普通for循环耗时:1.2068836688995361秒

    输出结果很明显,实现通用的功能,列表推导式的效率整整高出普通for循环一倍。

    最后温馨提醒:测试请把循环次数改小一点,毕竟刚开始不小心多加了几圈圈,电脑死机了!

    四.重点总结

    1.注意在列表推导式书写的时候,所有表达式都必须在[]内部,因为返回值是列表list

    2.列表推导式是python开发学习的知识点,多多联系,熟能生巧.

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。