百科狗-知识改变命运!
--

掌握Python中的循环技术

乐乐1年前 (2023-11-21)阅读数 35#技术干货
文章标签遍历

1.使用enumerate()循环整个序列

当循环遍历一个序列(如列表、元组、范围对象、字符串)时,可以使用enumerate()函数同时检索位置索引和相应的值。

(1)使用enumerate()遍历列表:

示例1:

使用enumerate()函数遍历列表,返回一个包含可迭代对象中的计数和值的元组。一般情况下,计数从0开始。

colors=['red','green','blue']

forcolorinenumerate(colors):

print(color)

#Output:

(0,'red')

(1,'green')

(2,'blue')

示例2:

count从5开始循环迭代器。

colors=['red','green','blue']

forcolorinenumerate(colors,5):

print(color)

'''

Output:

(5,'red')

(6,'green')

(7,'blue')

'''

(2)使用enumerate()循环字符串:

示例:

使用enumerate()函数遍历字符串将返回一个包含可迭代对象的计数和值的元组。一般情况下,计数从0开始。

s='python'

foriinenumerate(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']

foriinzip(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]

foriinzip(colors,num):

print(i)

'''

Output:

('red',1)

掌握Python中的循环技术

('green',2)

('blue',3)

'''

(3)使用zip()循环两个或多个序列:

示例:

colors=['red','apple','three']

num=[1,2,3]

alp=['a','b','c']

foriinzip(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。

fromitertoolsimportzip_longest

colors=['red','apple','three']

num=[1,2,3,4,5]

foriinzip_longest(colors,num):

print(i)

'''

Output:

('red',1)

('apple',2)

('three',3)

(None,4)

(None,5)

'''

示例2:指定fillvalue。

fromitertoolsimportzip_longest

colors=['red','apple','three']

num=[1,2,3,4,5]

foriinzip_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]

foriinsorted(num):

print(i)

'''

Output:

5

10

20

25

30

35

40

'''

示例2:使用sorted()函数按排序(降序)遍历序列(list)。

num=[10,5,20,25,30,40,35]

foriinsorted(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}

foriinsorted(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}

#sortingbyvaluesinthedictionary

foriinsorted(d.items(),key=lambdaitem: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']

foriinreversed(colors):

print(i)

'''

Output:

yellow

blue

green

red

'''

6.循环查找字典

当循环遍历字典时,可以使用items()方法同时检索键和相应的值。

示例:

d={'a':1,'b':2,'c':3}

fork,vind.items():

print(k,v)

#Output:

a1

b2

c3

7.在迭代时修改集合

在遍历同一个集合时修改集合的代码可能很难正确处理。相反,循环遍历集合的副本或创建一个新集合通常更简单。

策略1:对副本进行迭代

如果希望在迭代时删除字典中的项,则在字典的副本上进行迭代:

d={'a':1,'b':2,'c':3}

fork,vind.copy().items():

ifv%2==0:

deld[k]

print(d)

#Output:{'a':1,'c':3}

策略2:创建一个新的集合

d={'a':1,'b':2,'c':3}

d1={}

fork,vind.items():

ifv%2!=0:

d1[k]=v

print(d1)

#Output:{'a':1,'c':3}

print(d)

#Output:{'a':1,'b':2,'c':3}

以上内容为大家介绍了掌握Python中的循环技术,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。http://www.baikegou.com/

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)