高级特性

xiaoxiao2021-02-27  164

切片

str,list,tuple有 dict,set无

迭代

任何可以迭代的对象都可以用for循环遍历;字典的迭代:默认是通过key进行迭代的; for i in d: print i

字典的枚举:枚举只能返回返回两个值,一个是索引下标,一个是迭代的元素; for i,j in enumerate(l): print i,j,l[j]

怎么去判断是否可迭代 from collections import Iterable isinstance("hello",Iterable)

列表生成式

列表生成式,其实就是生成列表的一种方式,是python内置的;

简单的列表生成式 [ 2*i+1 for i in range(10) ] # 返回1-10的2n+1的一个列表;

[ fun(i) for i in l] # 对列表的每个元素执行某个函数操作; [k+”->”+v for k,v in d.items()] [i.upper() for i in l] l=[1,2,3,”hello”,”world”] [i.upper() for i in l if isinstance(i,str)]

for…if的嵌套 [ i for i in range(1,10) if i%2==0] # 返回1-10之间所有的偶数 [ i*i for i in range(1,10) if isprime(i)] # 返回1-10之间所有的质数的平方,判断质数的函数是自定义的;

for…for…的嵌套 [ i+j for i in “abc” for j in “123”] # 返回”abc”和”123”的所有组合;

生成器

列表生成式可以直接创建一个列表,但列表容量受内存的限制;在Python中一边循环一边计算的机制,称为生成器(Generator);就是你需要多少,它就生成多少;

创建生成器的方法:

将列表生成式的[]改为();在定义的函数中加入yield关键字;

查看生成器元素的方式:

使用生成器的next方法;(不常用)生成器是可迭代的对象,直接通过for循环查看; 产生费那波契序列: def fib(max): n,a,b = 0,1,1 while n < max: yield a a,b = b, a + b n = n + 1 g=fib(6) for i in g: print i

转载请注明原文地址: https://www.6miu.com/read-14777.html

最新回复(0)