码迷,mamicode.com
首页 > 编程语言 > 详细

Linux下Python学习笔记 2:条件判断、循环

时间:2015-09-14 00:32:35      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:

一、条件判断

if 语句

比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现:

技术分享

注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3行 print 语句就构成一个代码块(但不包括第4行的print)。如果 if 语句判断为 True,就会执行这个代码块。

缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

在ubuntu下的vim中需要设置tab默认为4个空格,可以找到 ~/.vimrc文件并设置 set tabstop=4

#使用vim打开 ~/.vimrc文件,若没有则创建
vim ~/.vimrc
#打开后输入
set tabstop=4

注意: if 语句后接表达式,然后用:表示代码块开始。

如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车。

if-else 语句

技术分享

注意:else语句后也有:用来表示代码块开始。

if-elif-else 语句

相当于多层判断,为了方便看到效果,我们使用raw_input来接收我们的输入,以便于及时看到效果。

技术分享

换一种写法

技术分享

保存后运行

技术分享

二、循环

上一篇有提到集合类型list和tuple,当我们需要依次访问集合中的内容时,我们就需要循环了。

for 循环

技术分享

while 循环

技术分享

break 退出循环

技术分享

continue 继续循环

技术分享

循环嵌套

技术分享

迭代循环

Python中,迭代永远是取出元素本身,而非元素的索引。

对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?

方法是使用 enumerate() 函数

技术分享

使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:

[‘john‘, ‘json‘, ‘jay‘]

变成了类似:

[(0, ‘john‘), (1, ‘json‘), (2, ‘jay‘)]

因此,迭代的每一个元素实际上是一个tuple。

迭代dict

我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。

如果我们希望迭代 dict 对象的value,应该怎么做?

dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:

技术分享

dict 对象还有一个 itervalues() 方法,迭代的效果和values()一样。

那这两个方法有何不同之处呢?

1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

dict 对象还有一个 items()方法

技术分享

可以看到 items()方法包含了key和value,其实是把dict对象转换成了包含tuple的list。

items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

Linux下Python学习笔记 2:条件判断、循环

标签:

原文地址:http://www.cnblogs.com/idoudou/p/LearnPython_Conditional.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!