注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

互联网产品经理的窝

梦想社:一个人为了梦想,始终没有停下自己的脚步

 
 
 

日志

 
 

Python 学习笔记 - 12.流程控制  

2013-05-22 20:59:45|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

if...elif...else

Code
>>>>>> def test(i):
if 0<i<10:
print "small.."
elif 10<=i<20:
print "midle.."
elif 20<=i<30:
print "large.."
else:
print "invalid.."


>>>>>> test(15)
midle..

 

for...in...

 

Code
>>>>>> for i in range(4):
print i


0
1
2
3
>>>>>>
>>>>>> for k, v in {1:"a", 2: "b", 3:"m"}.items():
print "%d=%s"%(k,v)


1=a
2=b
3=m
>>>>>>

 

当然,我们可以用 range() 来实现 C# for(++)/for(--) 的效果。

 

Code
>>>>>> for i in range(len(a)):
print "%d: %s"%(i, a[i])


0: a
1: b
2: c
>>>>>>
>>>>>> for i in range(len(a)-1, -1, -1):
print "%d: %s"%(i, a[i])


2: c
1: b
0: a
>>>>>>

 

while

 

Code
>>>>>> while i < 5:
print i
i
=i+1;


0
1
2
3
4
>>>>>>
>>>>>> while True:
print i
i
+=1;
if i == 5:break


0
1
2
3
4
>>>>>>

 

continue, break

和大多数语言一样,Python 循环同样支持 continue 和 break。这没什么好说的。

Changing horses in midstream

我们看一个有意思的例子。

Code
>>>>>> a=range(3)
>>>>>> for i in a:
print i
a
=range(10)


0
1
2
>>>>>>

 

你会发现在循环体内部对 a 的修改并没有起到作用,为什么会这样呢?改一下代码就明白了。

Code
>>>>>> a=range(3)
>>>>>> hex(id(a))
'0xdc36e8'
>>>>>> for i in a:
print i
a
=range(19)
print(id(a))


0
14411376
1
14431896
2
14386240
>>>>>>

 

哦~~~ 原来内部所谓修改的 a 完全是一个新的对象,自然不会影响到循环体本身了。这和 Python 变量的作用范围有关。

xrange()

如果你用 range() 创建一个很大的列表时,你会发现内存一下涨了很多~~~~~ ,这时候你应该用 xrange() 来代替。虽然这两者从表面看没什么区别,但实际上他们生成的结果类型并不一样。

Code
>>>>>> type(range(10))
<type 'list'>
>>>>>> type(xrange(10))
<type 'xrange'>
>>>>>>
  评论这张
 
阅读(256)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017