Python高级特性
来源:互联网 发布:世纪佳缘数据库.zip 编辑:程序博客网 时间:2024/05/16 08:15
Python高级特性
- 切片
- 迭代及迭代器
- 列表生成式
- 生成器
这些高级特性的作用都是一样的,为了代码的简洁、高效运行。
切片
切片让取一个list或tuple的部分元素变得相当简单,
e.g:
L=[‘jack’,’mike’,’jerry’]
那么第一个位置,索引为0:L[0]=’jack’;
索引从1-2,不包括2,L[1:2]=’mike’;
索引从倒数第二个到倒数第一个L[-2:-1]=’mike’;
间隔某个值取值:L[x:y:z],x表示起始位,y表示终止位,z表示间隔取值;
迭代
遍历List:
L = [‘mike’,’jack’,’jerry’]
for x in L:
print(‘Hello, %s!’ % x)
遍历dict:
默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。
所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。
那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
>>> from collections import Iterable>>> isinstance('abc', Iterable) # str是否可迭代True>>> isinstance([1,2,3], Iterable) # list是否可迭代True>>> isinstance(123, Iterable) # 整数是否可迭代False
迭代器:
凡是可作用于for循环的对象都是Iterable类型,isinstance()可以判断一个对象是否是Iterable对象,如:isinstance(‘abc’, Iterable);
凡是可作用于next()函数的对象都是Iterator类型;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象;
Python的for循环本质上就是通过不断调用next()函数实现的.
PS:迭代器的具体用法及好处在后面实际用到时再做补充。
列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))
条件过滤:for循环结合if语句
e.g:
>>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, 36, 64, 100]
L1 = ['Hello', 'World', 18, 'Apple', None]L2 = [s.lower() for s in [x for x in L1 if isinstance(x, str)]]print(L2)
生成器
概念:如果你要创建一个超大容量的list,其实不需要创建完整的list,在Python中,提供了一边循环一边计算的机制,称为生成器:generator。
创建生成器:只要把一个列表生成式的[]改成(),就创建了一个generator:
>>> g = (x * x for x in range(10))>>> g<generator object <genexpr> at 0x1022ef630>
然后通过for循环打印出来:
for n in g: print(n)
- Python高级特性
- Python的高级特性
- Python高级特性
- Python高级特性
- python高级特性
- Python高级特性:生成器
- python 高级特性
- Python学习----高级特性
- Python 高级特性 : 切片
- Python 高级特性 : 生成器
- python 高级特性
- Python高级特性
- Python-Day3(高级特性)
- python的高级特性
- python高级特性 - 切片
- Python高级特性
- python 2.7 : 高级特性
- python 高级特性
- 苏嵌第一课
- ubuntu系统下安装jdk
- ubuntu 将连续帧图片转换成视频流
- 瀑布流布局
- 基于Token的WEB后台认证机制
- Python高级特性
- todolist
- CSS+DIV设计导航条源代码
- 使用Caffe复现DeepID实验
- 存储器
- android开发教程21篇(强烈推荐,几乎每一篇都是精华教程)
- 【Oracle】模糊查询与高级连接查询
- 不理解的问题
- Large-Scale Scene Classification Using Gist Feature