快速掌握Python中的循环技术
Python的快速最基本的循环技术是for语句,它可以遍历任何序列(列表或字符串)中的掌握中项目,按照它们在序列中出现的循环顺序。本文将全面介绍for循环的技术技术以及实战用法。
1. 使用enumerate()循环整个序列
当循环遍历一个序列(如列表、快速元组、掌握中范围对象、循环字符串)时,技术可以使用enumerate()函数同时检索位置索引和相应的快速值。
(1) 使用enumerate()遍历列表:
示例1:
使用enumerate()函数遍历列表,掌握中返回一个包含可迭代对象中的循环计数和值的元组。一般情况下,技术计数从0开始。快速
colors=[red,掌握中green,blue] for color in enumerate(colors): print (color) #Output: (0, red) (1, green) (2, blue)示例2:
count从5开始循环迭代器。
colors=[red,循环green,blue] for color in enumerate(colors,5): print (color) Output: (5, red) (6, green) (7, blue)(2) 使用enumerate()循环字符串:
示例:
使用enumerate()函数遍历字符串将返回一个包含可迭代对象的计数和值的元组。一般情况下,计数从0开始。
s=python for i in enumerate(s): print (i) #Output: (0, p) (1, y) (2, t) (3, h) (4, o) (5, n)2. 使用zip()函数循环两个或多个序列
要同时循环两个或多个序列,服务器租用可以使用zip()函数对条目进行配对。
(1) 使用zip()循环两个相同长度的序列
示例:
num = [1, 2, 3] colors= [red, blue, green] for i in zip(num, colors): print(i) Output: (1, red) (2, blue) (3, green)(2) 使用zip()循环两个不同长度的序列
如果使用zip()遍历两个长度不同的序列意味着当最短的可迭代对象耗尽时停止。
示例:
colors=[red,green,blue] num=[1,2,3,4,5,6,7,8,9,10] for i in zip(colors,num): print (i) Output: (red, 1) (green, 2) (blue, 3)(3) 使用zip()循环两个或多个序列:
示例:
colors=[red,apple,three] num=[1,2,3] alp=[a,b,c] for i in zip(colors,num,alp): print (i) Output: (red, 1, a) (apple, 2, b) (three, 3, c)3. itertools.zip_longest ()
创建一个从每个可迭代对象中聚合元素的迭代器。如果可迭代对象的长度不均匀,则用fillvalue填充缺失的值。迭代继续,直到最长的可迭代对象耗尽。
使用itertools.zip_longest()循环两个不同长度的序列。
示例1:如果不指定fillvalue,则默认为None。
from itertools import zip_longest colors=[red,apple,three] num=[1,2,3,4,5] for i in zip_longest(colors,num): print (i) Output: (red, 1) (apple, 2) (three, 3) (None, 4) (None, 5)示例2:指定fillvalue。
from itertools import zip_longest colors=[red,apple,three] num=[1,2,3,4,5] for i in zip_longest(colors,num,fillvalue=z): print (i) Output: (red, 1) (apple, 2) (three, 3) (z, 4) (z, 5)4. 使用sorted()函数按已排序的顺序循环序列
sorted():从iterable中的项返回一个新的排序列表。
示例:1使用sorted()函数按排序(升序)遍历序列(list)。
num=[10,5,20,25,30,40,35] for i in sorted(num): print (i) Output: 5 10 20 25 30 35 40示例2:使用sorted()函数按排序(降序)遍历序列(list)。
num=[10,5,20,25,30,40,35] for i in sorted(num,reverse=True): print (i) Output: 40 35 30 25 20 10 5示例3:使用sorted()函数按排序(升序)遍历字典。默认情况下,高防服务器它将对字典中的键进行排序。
d={ f:1,b:4,a:3,e:9,c:2} for i in sorted(d.items()): print (i) #Output: (a, 3) (b, 4) (c, 2) (e, 9) (f, 1)示例4:使用已排序的函数按已排序的顺序循环字典。在已排序的函数中使用key参数,根据字典的值对其排序。
d={ f:1,b:4,a:3,e:9,c:2} #sorting by values in the dictionary for i in sorted(d.items(),key=lambda item:item[1]): print (i) #Output: (f, 1) (c, 2) (a, 3) (b, 4) (e, 9)5. 使用reversed()函数遍历序列
reversed(seq):
返回反向迭代器。seq必须是一个具有__reversed__()方法或支持序列协议(__len__()方法和__getitem__()方法,参数从0开始)的对象。
示例:
反向循环一个序列,然后调用reversed()函数。
colors=[red,green,blue,yellow] for i in reversed(colors): print (i) Output: yellow blue green red6. 循环查找字典
当循环遍历字典时,可以使用items()方法同时检索键和相应的值。
示例:
d={ a:1,b:2,c:3} for k,v in d.items(): print (k,v) #Output: a 1 b 2 c 37. 在迭代时修改集合
在遍历同一个集合时修改集合的代码可能很难正确处理。相反,循环遍历集合的副本或创建一个新集合通常更简单。
策略1:对副本进行迭代
如果希望在迭代时删除字典中的项,则在字典的副本上进行迭代:
d={ a:1,b:2,c:3} for k,v in d.copy().items(): if v%2==0: del d[k] print (d) #Output:{ a: 1, c: 3}策略2:创建一个新的网站模板集合
d={ a:1,b:2,c:3} d1={ } for k,v in d.items(): if v%2!=0: d1[k]=v print (d1) #Output:{ a: 1, c: 3} print (d) #Output:{ a: 1, b: 2, c: 3}英文原文链接:
https://medium.com/analytics-vidhya/looping-techniques-in-python-3bbf907b8dfa