循环语句(for、while)(二)

Python提供了两个内置函数,在for循环内定制迭代:

1、内置range函数返回一系列连续增加的整数,可作为for中的索引。

  (1). 当range函数只有一个参数时,range会产生从零算起的整数列表,但其中不包括该参数的值

  

1 list(range(5))      #示例代码
2 [0, 1, 2, 3, 4]     #运行结果

 

  (2). 当range函数有两个参数时,range产生以第一个为下边界,第二个为上边界,步长为一的整数列表(不包含上边界)。

  

1 list(range(2,5))     #示例代码
2 [2, 3, 4]               #运行结果

  (3). 当包含三个参数是,第三个参数为步长值。

  

1 list(range(0,10,2))      #代码示例
2 [0, 2, 4, 6, 8]            #运行结果

range也可以是非整数或非递增的。

   除非你有特殊的索引要求,不然在可能的情况下,最好使用Python中的简单的for循环,不要用while,并且不要在for循环中使用range调用,只将其视为最后的手段。

更简单的办法总是更好的。

2、内置zip函数返回并行元素的元组的列表,可用在for中内遍历数个序列。

  内置的zip函数可以在for循环中并行多个徐磊。在基本运算中zip会取得一个或多个序列为参数,然后返回元组的列表,将这些序列中的并排的元素配成对。

1 L1 = [1,2,3,4]
2 L2 = [5,6,7,8]
3 zip(L1, L2)    
4 
5 list(zip(L1, L2)]
6 输出结果:
7 [(1, 5), (2, 6), (3, 7), (4, 8)]

搭配for循环使用时:

1 for (x, y) in zip(L1, L2):
2     print(x, y, '--', x+y)
3 
4 输出结果:
5 1 5 -- 6
6 2 6 -- 8
7 3 7 -- 10
8 4 8 -- 12

zip可以接受任何类型的序列(即任何可迭代的对象,包括文件),并且可以有两个以上的参数。

当参数长度不同时,zip会一最短序列的长度为准来截断所得到的元组。

 

用zip构造字典:

keys = ['spam', 'eggs', 'toast']
vals = [1,3,5]
D2 = {}
for (k, v) in zip(keys, vals):
    D2[k] = v
运行结果:
D2
{'eggs': 3, 'spam': 1, 'toast': 5}

 

posted on 2016-12-19 22:07  知止而后有定  阅读(268)  评论(0)    收藏  举报

导航