内容简介:python—高级特性
- 代码精炼
-
python代码量越少,开发效率越高.
切片
- 取list或tuple的部分元素
-
示例
L[0:3] #0到3,但结果不包括索引3 L[:3] #0可省略
L[-2:] #-2到0 但不包括索引0 L[-2:-1] #-2
L[:10:2] #前10 每隔2个取一个 L[::5] #所有,每隔5个取一个 L[:] #原样复制
-
对tuple取切片,结果依然是tuple.
- 字符串可以看作一个list ,每个字符占一位.
迭代
- 迭代很随便…太随便了…
- list tuple不多说了
-
dict字典也可以迭代,因为无序,输出的顺序不一定相同.
默认迭代的是key 但value 也可以迭代,key value也可以同时迭代
for value in d.values() for k, v in d.items()
-
上文书中说的,字符串可以当作list,所以也可以迭代.
-
问题来了,如何判断可迭代对象?
collections模块的Iterable类型判断>>>from collections import Iterable >>>isinstance('abc', Iterable) # str是否可迭代 True -
类似c/java的带下标循环实现?
Python内置的
enumerate函数,把一个list变成索引-元素对for i, value in enumerate(['A', 'B', 'C']): print(i, value)
列表生成式
-
用来生成list -
示例: [1x1, 2x2, 3x3, …, 10x10]
[x * x for x in range(1, 11)] [m + n for m in 'ABC' for n in 'XYZ'] #两层
-
for可以同时循环两个甚至多个变量,dict的items()可以同时迭代key和value
d = {'x': 'A', 'y': 'B', 'z': 'C' } # 多个变量 [k + '=' + v for k, v in d.items()] # 生成list [s.lower() for s in L] # 全部小写
生成器
- generator 依照某种算法不断循环生成数据,而不是一次性生成完.节省大量空间.
-
创建generator
-
把列表生成式的[]改成()
g = (x * x for x in range(10))
调用
next(g)可获取下一个值.最常用
for n in g:代入for循环.也没有抛出错误. -
定义一个包含
yield关键字的函数.def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done'- 变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
- 用for循环调用generator时,拿不到generator的return语句的返回值。如果想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteration的value中.
-
迭代器
-
可以被for循环的对象统称为可迭代对象:
Iterable
使用isinstance()判断一个对象是否是Iterable对象isinstance({}, Iterable) -
可以被next()函数调用并不断返回下一个值的对象称为迭代器:
Iterator表示一个惰性计算的序列Iterator甚至可以表示一个无限大的数据流isinstance()判断一个对象是否是Iterator对象
isinstance((x for x in range(10)), Iterator)
-
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
- Python的for循环本质上就是通过不断调用next()
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Security Testing Cookbook
Paco Hope、Ben Walther / O'Reilly Media / 2008-10-24 / USD 39.99
Among the tests you perform on web applications, security testing is perhaps the most important, yet it's often the most neglected. The recipes in the Web Security Testing Cookbook demonstrate how dev......一起来看看 《Web Security Testing Cookbook》 这本书的介绍吧!