python:7:循环与迭代

来源:互联网 发布:数据库本地连接不上 编辑:程序博客网 时间:2024/06/11 21:05

第一章:python

第七节:循环与迭代

1,循环

for循环迭代选取序列元素的三种方式
1.序列项迭代
>>> list1=[1, 2, 3]
>>> for a in list1:
... ····print a
1
2
3
2.序列索引迭代
>>> for x in range(len(list1)):
... ····print list1[x]
1
2
3
3.序列项和序列索引同时迭代
>>> for x,a in enumerate(list1):
... ····print x,a
0 1
1 2
2 3

range()函数的用法
range(start, end, step) #起始值,终止值,步长值
例如:range(6, 2)和range(6, 1)这样的写法都是不允许的,因为没有设定起始值,正确写法如下:
range(0, 6, 2)和range(0, 6, 1)

循环中break的用法
break语句用于结束当前循环(如果有多层循环时,break仅退出一层循环),一般用if语句进行检查判断,常用于寻找第一个出现的值,之后退出
在整个for循环中,只要出现break就结束整个循环,出现break之后,else当中的内容不会出现,因为这个for循环时被中断的,而else是在for循环正常结束之后才执行的内容。
>>> list1=[9, 7, 4, 3, 3]
>>> list2=[1, 2, 4]
>>> x=0
>>> while x < len(list2):
... ····if list2[x] in list1:
... ········print list2[x]
... ········break
... ····x+=1

>>> for x in range(len(list2)):
... ····if list2[x] in list1:
... ········print list2[x]
... ········break

continue语句
当遇到continue语句时,程序会终止当前循环,并忽略剩余语句,然后回到循环的顶端;在开始下一次迭代前,如果是条件循环,我们将验证条件表达式;如果是迭代循环,我们将验证是否还有元素可迭代。
>>> l=[1,4,7,4,6,5,4,6]
>>> for a in l:
... ····if a==4:
... ········continue
... ····print a,
1 7 6 5 6 #不输出l当中数值为4的结果
>>> for a in l:
... ····if a!=4:
... ········continue
... ····print a,
4 4 4 #仅输出l当中数值为4的结果
>>> for a in l:
... ····if a!=4:
... ········continue
... ········print a,
不输出任何结果,因为print a, 是continue语句后面被忽略的内容

pass语句
主要用于占位,可使if,for及while语句不执行内容;

循环中的else语句
在while及for循环中,else子句只循环完成后执行,也就是说break语句也会跳过else块,只要for或while循环时正常结束的(不是通过break)else子句就会执行

2,迭代

>>> t=(123, 'xyz')
>>> i=iter(t)
>> i
<tupleiterator object at 0x7f0874000a990>
>>> i.next() #123
>>> i.next() #‘xyx’
>>> i.next()
stopIteraion
当没有元素可取时会抛出一个StopIteration异常
iter()作为一个迭代器,把可迭代对象(列表,元组,文件对象,字典(只是字典的键)),放入括号中,作为一个对象后,利用next()函数,从前向后取出迭代对象中的元素。
字典可以迭代字典的键,值或者键值对
>>> d={1: 2, 3: 4}
>>> a=iter(d.items()) #迭代键值对
>>> a.next()
(1, 2)
>>> iter(d.keys()) #迭代键
>>> iter(d.values()) #迭代值