循环语句(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}
浙公网安备 33010602011771号