切片
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