美文网首页
python高级用法

python高级用法

作者: 一杯海风_3163 | 来源:发表于2019-03-28 18:02 被阅读0次

本文主要介绍三种python的高级用法:列表推导式、迭代器和生成器、装饰器

一、列表推导(list comprehensions)
使用场景1:将一个三维列表中所有一维数据为1的元素合并,组成新的二维列表。
# 假设有一个三维数组
>>> result_list=[[1,2,3],[1,4,5],[4,7,6]]
>>> lista=[item for item in result_list if item[0]==1]
>>> lista
[[1, 2, 3], [1, 4, 5]]
>>>

维度是指描述一个事物所使用的参量个数,通常是在数学或物理上的描述。如上列表中嵌套列表的元素个数即为维度数。通过简单而又快速的列表推导式,可以很快的从一个多维列表中选出符合筛选条件的列表元素并组成新的列表,这种写法简洁而且快捷。

使用场景2:对于一个列表,既要遍历索引又要遍历元素。

这里可以使用python内建函数enumerate,在循环中更好的获得索引。

# 定义一个函数,专门处理数组数据
>>> def getitem(index,element):
...     return '%s:%s' %(index,element)
...
#  定义数组
>>> array=['nihao','python']
# 使用enumerate函数,配合自定义函数使用
>>> arrayIndex = [getitem(index,element) for index,element in enumerate(array)]
>>> arrayIndex
['0:nihao', '1:python']
>>> array = ['abcdefg','1234567','ABCDEFG']
>>> arrayIndex = [getitem(index,element) for index,element in enumerate(array)]
>>> arrayIndex
['0:abcdefg', '1:1234567', '2:ABCDEFG']
二、迭代器和生成器
1.迭代器(Iterator)

使用isinstance()方法可以判断是否是迭代器或者是否能迭代。

from collections import Iterable
is_iterable =  isinstance('python',Iterable)
print type

迭代器(Iterator):指的是可以使用next()方法来回调的对象,可以对可迭代对象使用iter()方法,将其转换为迭代器。
可迭代对象(Iterable):可以使用for循环进行循环的如列表,字典,元祖等,均为可迭代对象,但不是迭代器,可使用iter()方法将其转换为迭代器。

temp = iter(['a','b','c'])
print type(temp)
print next(temp)

这里temp就是一个迭代器,所以说,只有满足以下两个方法的,才是迭代器:

  1. next:返回下一个项目
    2.iter: 返回迭代器本身
    也可理解为可被next()函数调用并不断返回下一个值的对象就是迭代器,在定义一个装饰器时将需要同时定义这两个方法。
    迭代器的优势
    在构建迭代器时,不是将所有的元素一次性的加载,而是等调用next方法时返回元素,所以不需要考虑内存的问题。在数列的数据规模巨大或者数列有规律但是不能使用列表推导式描述的情况下比较适用。
2.生成器

生成器是一种高级迭代器,可以暂停一个函数并返回中间结果。当需要一个将返回一个序列或在循环中执行的函数时,就可以使用生成器,因为当这些元素被传递到另一个函数中进行后续处理时,一次返回一个元素可以有效的提升整体性能。

相关文章

  • Python装饰器的高级用法

    Python装饰器的高级用法(翻译) 原文地址https://www.codementor.io/python/t...

  • Python 高级用法

    python 中 __all__变量: 它是一个string元素组成的list变量,定义了当你使用from im...

  • Python高级用法

    前言 本篇文章主要介绍了python的一些高级用法:时间和日期、列表推导式、Python高阶函数、多线程。 时间和...

  • python高级用法

    本文主要介绍三种python的高级用法:列表推导式、迭代器和生成器、装饰器 一、列表推导(list compre...

  • python常见高级用法

    Lambda匿名函数 匿名函数就是没有定义函数名称,可以实现函数某些简单功能 匿名函数格式: lambda par...

  • Python/Numpy的一些高级用法(个人笔记)

    Python/numpy 常用与高级用法总结(实时更新)开始在商汤做算法研究员后,工作中要写大量python,但因...

  • Python装饰器高级用法

    转载至:Python装饰器高级用法 在 Python 中, 装饰器 一般用来修饰函数,实现公共功能,达到代码复用的...

  • python中super()的一些用法

    在看python高级编程这本书的时候,在讲到super的时候,产生了一些疑惑,super在python中的用法跟其...

  • Python面向对象编程(二)

    本文我们继续介绍一些Python面向对象编程中的高级用法,依然参考廖雪峰老师的Python教程。 教程地址:htt...

  • Numba使用简介

    Numba库使用简介 1.基本用法 1.以非python方式编译 2.释放GIL锁 3.储存编译 2.高级用法 1...

网友评论

      本文标题:python高级用法

      本文链接:https://www.haomeiwen.com/subject/rjyqbqtx.html