切片
用于截取list中的元素,比如L是一个list
L[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方法继续执行下去。