序
Python最基本的循环技术是for语句,它可以按照项目在序列中出现的顺序遍历任何序列(列表或字符串)中的项目。本文将全面介绍for循环的技术和实际用法。
1.使用enumerate()循环整个序列:
当遍历一个序列(比如list、tuple、range对象、string)时,可以使用enumerate()函数同时检索位置索引和相应的值。
使用enumerate()遍历列表:
示例1:
使用enumerate()函数遍历列表并返回包含iterable对象中的计数和值的元组。一般来说,计数从0开始。
colors=['red','green','blue']for color in enumerate(colors): print (color)#Output:(0, 'red')(1, 'green')(2, 'blue')
示例2:
从计数5开始的循环迭代器。
colors=['red','green','blue']for color in enumerate(colors,5): print (color)'''Output:(5, 'red')(6, 'green')(7, 'blue')'''
使用enumerate()循环字符串:
示例:
使用enumerate()函数遍历字符串将返回一个包含iterable对象的计数和值的元组。一般来说,计数从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()函数来配对条目。
使用zip()循环两个长度相同的序列
示例:
num = [1, 2, 3]colors= ['red', 'blue', 'green']for i in zip(num, colors): print(i)'''Output:(1, 'red')(2, 'blue')(3, 'green')''
使用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)'''
使用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()
创建一个迭代器,聚合每个可迭代对象的元素。如果iterable对象的长度不均匀,用fillvalue填充缺少的值。迭代直到最长的可迭代对象用尽。
使用itertools.zip_longest()循环两个不同长度的序列。
示例1:
如果未指定fillvalue,则默认为None。
from itertools import zip_longestcolors=['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_longestcolors=['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()函数按排序顺序循环序列:
已排序():
从iterable中的项返回一个新的排序列表。
示例:1
使用sorted()函数按升序遍历序列(列表)。
num=[10,5,20,25,30,40,35]for i in sorted(num): print (i)'''Output:5102025303540'''
示例2:
使用sorted()函数按降序遍历序列(列表)。
num=[10,5,20,25,30,40,35]for i in sorted(num,reverse=True): print (i)'''Output:4035302520105'''
示例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:
使用排序函数按排序顺序循环字典。使用sorted函数中的key参数根据字典的值对其进行排序。
d={'f':1,'b':4,'a':3,'e':9,'c':2}#sorting by values in the dictionaryfor 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()函数遍历序列:
已反转(顺序)
返回反向迭代器。Seq必须是具有__reversed__()方法或支持序列协议的对象(__len__()方法和__getitem__()方法,参数从0开始)。
示例:
循环一个序列,然后调用reversed()函数。
colors=['red','green','blue','yellow']for i in reversed(colors): print (i)'''Output:yellowbluegreenred'''
6.循环查字典。
在遍历字典时,可以使用items()方法同时检索键和相应的值。
示例:
d={'a':1,'b':2,'c':3}for k,v in d.items(): print (k,v)#Output:a 1b 2c 3
7.在迭代过程中修改***:
在遍历同一个***时修改该***的代码可能难以正确处理。相反,遍历一个***的副本或创建一个新***通常更简单。
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]=vprint (d1)#Output:{'a': 1, 'c': 3}print (d)#Output:{'a': 1, 'b': 2, 'c': 3}
本文来自情侣多了单身才养眼投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/577931.html