#coding=utf-8 ''' Created on 2013年11月24日 @author: LiuQiang ''' #第一种迭代方法 strings = ['my','name','is','xiao','ming','his','name','is','xiao','li'] for string in strings: if 'name' in string: index = strings.index(string) strings[index] = '###' print strings #第二种迭代方法 strings = ['my','name','is','xiao','ming','his','name','is','xiao','li'] index = 0 for string in strings: if 'name' in string: strings[index] = "***" index += 1 print strings #第三种迭代的方式 strings = ['my','name','is','xiao','ming','his','name','is','xiao','li'] for index,string in enumerate(strings): if 'name' in string: strings[index] = '$$$' print strings #翻转和排序 print sorted([4,3,8,1,5,0]) print sorted('hello , world !') print ''.join(sorted('hello,world!')) print reversed('hello,world!') #reversed 返回的不是列表,直接打印的话打印出来的是 一个对象 一个可迭代对象 print type(reversed('hello,world!')) #<type 'reversed'> print list(reversed('hello,world!')) #类型转换转成 列表 print ''.join(list(reversed('hello,world!'))) #链接列表元素,使形成一个字符串 print type(''.join(list(reversed('hello,world!')))) #<type 'str'> #循环遍历字典元素,这里用到了序列解包的概念 d = {'x':1,'y':2,'z':3} for key in d: #这里的这种循环就是获得的键值,和key这个变量的名字无关,这个key只是个普通的变量,本身毫无意义 print 'type(key):',type(key),"&&&&key=",key print key,"--->",d[key] for key,value in d.items(): #d.items()方法可以把一个键值对当做一个元组返回,在这个for循环中使用了序列解包 print key,'--->',value #并行迭代 内建的zip可以实现并行迭代 可以把两个序列压缩在一起返回一个元组 names = ['xiaoming','xiaoli','xiaoxiao'] ages = [10,20,50] for i in range(len(names)): print 'name:',names[i],'age:',ages[i] names_ages = zip(names,ages) print '压缩姓名和年龄后:',names_ages for name,age in names_ages: #序列解压缩 print name,'is',age,'years old !' #如果两个序列的长度不相等 直到最短的序列迭代完后,就不再迭代 test = zip(range(5),xrange(1000000)) #有必要再说下range和xrange的区别 range会一次性计算完所有的数值,而xrange不会,xrange每次只计算一个数值 print test #[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)] #列表推导式 ---轻量级循环 #原理是:利用其它的列表创建新的列白 new_seq = [x*x for x in range(10)] print '经列表推导式计算后结果为:',new_seq #可以多个for循环并用 new_seq2 = [(x,y) for x in range(3) for y in range(5) ] print '含双重for循环的列表推导式:',new_seq2 #打印能被3整除的数的平方 new_seq3 = [x*x for x in range(10) if x % 3 ==0] print '带有判断的列表推导式:',new_seq3