Python入门篇之条件、循环

2019-10-05 15:10:34王振洲

6.for语句

Python提供给我们的另一个循环机制就是for语句. 它提供了Python中最强大的循环结构.它可以遍历序列成员, 可以用在列表解析和生成器表达式中,它会自动地调用迭代器的next()方法,捕获StopIteration异常并结束循环(所有这一切都是在内部发生的).和传统语言中的for语句不同, Python的for更像是 shell 或是脚本语言中的foreach循环.

for循环会访问一个可迭代对象(例如序列或是迭代器)中的所有元素, 并在所有条目都处理过后结束循环.它的语法如下:


for iter_var in iterable:
  suite_to_repeat

1.用于序列类型


>>> for c in 'names':
    print 'current letter: ', c

current letter:  n
current letter:  a
current letter:  m
current letter:  e
current letter:  s

迭代序列有三种基本方法:

1.通过序列项迭代:


>>> namelists = ['henry', 'john', 'steven']
>>> for eachName in namelists:
      print eachName, 'Lim'
   
henry Lim
john Lim
steven Lim

2.通过序列索引迭代:


>>> namelists = ['henry', 'john', 'steven']
>>> for nameindex in range(len(namelists)):
    print 'Liu, ', namelists[nameindex]

Liu,  henry
Liu,  john
Liu,  steven

3.使用项和索引迭代:

两全其美的办法是使用内建的 enumerate() 函数, 它是 Python 2.3 的新增内容.


>>> namelists = ['henry', 'john', 'steven']
>>> for i, eachLee in enumerate(namelists):
    print "%d %s Lee" % (i+1, eachLee)
   
1 henry Lee
2 john Lee
3 steven Lee

2.用于迭代器类型

迭代器对象有一个 next() 方法,调用后返回下一个条目. 所有条目迭代完后, 迭代器引发一个 StopIteration 异常告诉程序循环结束. for 语句在内部调用 next() 并捕获异常.

3.range()内建函数

内建函数 range() 可以把类似 foreach 的 for 循环变成你更加熟悉的语句

Python 提供了两种不同的方法来调用range().完整语法要求提供两个或三个整数参数:
range(start, end, step =1)
range() 会返回一个包含所有k的列表,这里start <= k < end ,从start到end, k每次递增step. step不可以为零,否则将发生错误.


>>> range(2, 19, 3)
[2, 5, 8, 11, 14, 17]

如果只给定两个参数,而省略step,step就使用默认值1.


>>> range(3, 7)
[3, 4, 5, 6]

range() 还有两种简略的语法格式: