现在的位置: 首页 > 综合 > 正文

Python 循环小结,写给自己的

2013年03月26日 ⁄ 综合 ⁄ 共 1877字 ⁄ 字号 评论关闭
#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

抱歉!评论已关闭.