Python高级特性
切片、迭代、列表生成式、生成器
切片
Python中 代码越少越简单越好,
slice切片,用来获取list中某一段元素
tuple、str等都可以看做是一种list,使用切片获取的片段还是他们原来相应的类型
例1、对list进行切片
例2、对tuple进行切片
例3、对str进行切片
迭代
通过for循环遍历可迭代的对象,称为迭代。
在c或Java中迭代list等是通过下标来完成的。
虽然list这样的对象是有下标的我们可以完成迭代,但是dict、str等是没有下标的通过for...in一样可以完成迭代
通过itervalues()可以迭代dict的v
通过iteritems()可以迭代dict的k_V
如何判断一个对象是否可迭代
通过collections模块的iterable类型判断
例:
在Python中实现下标循环,Python内置的enumerate函数可以把一个list变成--索引——元素
例:
列表生成式
range()
1、通过range()生成一个连续的整数序列
2、通过--<表达式> <for循环> --产生列表
例1、生成一个整数序列
例2、生成特殊的数量
列表生成中加if、嵌套
使用if进行过滤
例、
例、
例:使用列表生成式,列出当前目录下所有的文件夹和目录名
生成器Generator
但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
Python提供了这一解决方案,列表元素通过某种算法推算出,在循环的过程中不断推算出后续元素,而不必创建完整的list
Python保存的是算法,每次调用next()
创建generator
1、把列表生成式的[]改成()
2、在一个普通函数中添加了yield关键字之后,这个函数就不在是一个普通函数,而是一个generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回yield语句处继续执行。
例1、
例2、
对于函数改造得到的generator,在遇到return或者函数体完成就结束了generator的指令,
例:
来自群组: Java用户组
author:lxy
切片、迭代、列表生成式、生成器
切片
Python中 代码越少越简单越好,
当要取一个list中的某一部分的元素时我们可以使用判断+循环实现,但是这略显繁琐,在Python提供了专门的方法切片
slice切片,用来获取list中某一段元素
tuple、str等都可以看做是一种list,使用切片获取的片段还是他们原来相应的类型
例1、对list进行切片
例2、对tuple进行切片
例3、对str进行切片
迭代
通过for循环遍历可迭代的对象,称为迭代。
在c或Java中迭代list等是通过下标来完成的。
虽然list这样的对象是有下标的我们可以完成迭代,但是dict、str等是没有下标的通过for...in一样可以完成迭代
通过itervalues()可以迭代dict的v
通过iteritems()可以迭代dict的k_V
如何判断一个对象是否可迭代
通过collections模块的iterable类型判断
例:
在Python中实现下标循环,Python内置的enumerate函数可以把一个list变成--索引——元素
例:
列表生成式
range()
1、通过range()生成一个连续的整数序列
2、通过--<表达式> <for循环> --产生列表
例1、生成一个整数序列
例2、生成特殊的数量
列表生成中加if、嵌套
使用if进行过滤
例、
例、
例:使用列表生成式,列出当前目录下所有的文件夹和目录名
生成器Generator
但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
Python提供了这一解决方案,列表元素通过某种算法推算出,在循环的过程中不断推算出后续元素,而不必创建完整的list
Python保存的是算法,每次调用next()
创建generator
1、把列表生成式的[]改成()
2、在一个普通函数中添加了yield关键字之后,这个函数就不在是一个普通函数,而是一个generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回yield语句处继续执行。
例1、
例2、
对于函数改造得到的generator,在遇到return或者函数体完成就结束了generator的指令,
例:
来自群组: Java用户组
用心-细心-专心-决心
学习就像爬大山,一步一步向前走
-态度决定高度-