1. 切片
注意,list、tuple、字符串'xxx'、Unicode字符中u'xxx'都可以看成一种list。都可以进行切片操作。
#定义一个list >> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] #取出list的前三个元素 >> L[0:3] ['Michael', 'Sarah', 'Tracy'] #取出list的第二个和第三个元素 >> L[1:3] ['Sarah', 'Tracy'] #取出list的前三个元素的简写方式 >> L[:3] ['Michael', 'Sarah', 'Tracy'] #取出list的倒数第二个元素 >> L[-2] 'Bob' #取出list的倒数第一个和倒数第二个元素 >> L[-2:] ['Bob', 'Jack'] #取出list的倒数第三和倒数第二个元素(不包含倒数第一个元素哦) >> L[-3:-1] ['Tracy', 'Bob'] #取出list的前四个元素(每两个取一个) >> L[:4:2] ['Michael', 'Tracy'] #取出list的所有元素(每三个取一个) >> L[::3] ['Michael', 'Bob'] #取出list的所有元素(复制当前list) >> L[:] ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] >>
2. 迭代
#!/usr/bin/env python d = {'a': 33, 'b': 128, 'c':66 } for key in d: print key print '\n' for value in d.itervalues(): print value print '\n' for key,value in d.iteritems(): print 'k=',key,'v=',value print '\n' for ch in 'ABC': print ch print '\n' from collections import Iterable print isinstance('abc',Iterable) print isinstance([1,2,3],Iterable) print isinstance(123,Iterable) print '\n' for index,value in enumerate(['A','B','C']): print 'index =',index,'value =',value print '\n' for x,y in [(1,1),(2,4),(3,9)]: print 'x =',x,'y =',y
3.列表生成式List Comprehensions
#!/usr/bin/env python #生成一个1到11的list print range(1,11) #生成一个1到11的列表,这个列表中的每个元素都自动乘以2 print [ x * 2 for x in range(1,11)] print [ x + 1 for x in range(1,11) if x % 2 == 0] #使用双层for来生成列表 print [ m + n for m in 'ABC' for n in 'XYZ'] #导入os模块 import os #遍历当前文件夹下所有的文件和目前 print [dir for dir in os.listdir('.')] d = {'x':'A','y':'B'} #遍历字典 for k,v in d.iteritems(): print k,'=',v #从字典中生成一个k=v格式的列表 print [k + '=' + v for k,v in d.iteritems()] #将列表中所有字符串转换成小写 L = ['Hello','World','IBM'] print [s.lower() for s in L] x = 'abc' y = 123 #判断变量是否为字符串 print isinstance(x,str) print isinstance(y,str)
4. 生成器generator
#!/usr/bin/env python #使用小括号定义一个生成器 g = (x * 2 for x in range(3)) #遍历生成器 for n in g: print n print '\n' #定义一个生成器 def odd(): print 'step 1' yield 1 print 'step 2' yield 2 print 'step 3' yield 3 #获取一个生成器实例 o = odd() #从生成器中获取下一个元素 print o.next() print o.next() print o.next() print '\n' #定义一个复杂的生成器 def even(max): n = 0 while n < max: n = n + 1 yield n * 2 #遍历生成器 for n in even(6): print n