from collections import Iterable In [10]: isinstance(1,int) Out[10]: True In [11]: isinstance(1,Iterable) Out[11]: False In [12]: isinstance("hello",Iterable) Out[12]: True In [13]: isinstance({},Iterable) Out[13]: True In [14]: isinstance({"a":"1"},Iterable) Out[14]: True In [15]: isinstance({1,2,3},Iterable) Out[15]: True默认情况下,字典遍历是遍历字典的key值;
In [16]: d = {"ftp":21,"ssh":22} In [17]: for i,j in d.items(): ....: print i,j ....: ftp 21 ssh 22 In [18]: for i in d: ....: print i ....: ftp ssh In [21]: for host,port in [("server1",80),("server2",8080)]: print host + ":" + str(port) ....: server1:80 server2:8080
格式: [i.lower() for i in l]
简单的列表生成式
[i**2 for i in range(1,10)]
[abs(i) for i in range(1,10)]
[fun(i) for i in range(1,11)]
嵌套if语句
[i for i in range(1,10) if isprime(i)]
嵌套for循环
“abc” “123”
[i+j for i in “abc” for j in “123”]
[service+”:”+str(port) for service,port in d.items()]
练习:
l = [“westos”,18,”red”],将所有的字符串变成大写并输出;
[i.upper() for i in l if isinstance(i,str)]
[i.upper() for i in l if type(i)==str]
通过列表生成式可以修改为生成器;
优势:
1). 节省内存空间;
2). 可以一边循环一边计算;
生成器的创建
1). 通过列表生成式可以修改为生成器;
2). 关键字yield,函数中有yield时,这个函数执行返回结果是一个生成器;
生成器的查看:
1). g.next()
2). for循环
map函数,map(函数, 序列),将传入的函数作用于列表中的每一个元素,返回一个列表;
reduce函数,reduce(函数, 序列),将函数的执行结果相加.
reduce(f,range(1,11)) = f(f(f(1,2),3),4)
filter函数,filter(函数, 序列),将函数作用于序列的每一个元素,将满足条件的返回;
sorted函数,sorted(序列,函数),按照自定义格式排序;