python2.7学习笔记(6) ——高级特性:切片、迭代、列表生成式、生成器
2015-08-17 15:20
1036 查看
切片
用于截取list中的元素,比如L是一个listL[a : b] a
迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。只要是可迭代对象,无论有无下标,都可以迭代
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
>>> from collections import Iterable >>> isinstance('abc', Iterable) # str是否可迭代 True >>> isinstance([1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) # 整数是否可迭代 False
列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。generator保存的是算法
创建方法:
一、只要把一个列表生成式的[]改成(),就创建了一个generator
使用generator的next() 方法可以每次计算出下一个值,但是没次使用next方法太过麻烦而且变态,所以经常使用迭代来使用,generator也是一个可迭代对象
二、使用函数来表达一个算法的时候,用print来打印出数字,我们可以将print换成yield,执行流程是,没次碰到yield就返回,当使用next方法时,就从上次退出的yield方法继续执行下去。
相关文章推荐
- PAT 02-4. Pop Sequence (25) Python C
- 【转】python之import机制
- 初触Python,关于pyquery解析html(百度贴吧)
- 《利用Python进行数据分析》第二章pivot_table报错问题
- python自定义包导入
- Python高级特性
- 第二部分:高级抓取(第七章、清理脏数据)
- 介绍Python 和 Scikit-Learn 的机器学习
- Python中map,reduce,filter和sorted函数的使用方法
- python基础学习——列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 介绍及相互转换
- python爬队员oj题数
- Python开发入门与实战17-新浪云部署
- python的socket编程
- vijos - P1319数列 (二进制 + 找规律 + python)
- Python Web Scraper - Simple Url Request
- python 编码规范
- python中xrange和range的比较
- 转载:唐磊的个人博客《python中decorator详解》【转注:深入浅出清晰明了】
- windows下 python 2.7x 安装pip
- PAT 02-3. 求前缀表达式的值(25) Python