python循环之美_一文搞懂Python循环的技巧

Python的for循环是coder最常用的语句之一,如果只是简单地对容器循环遍历,那便会少了很多美好的体验。像下面这样:

for i in range(10):        print(i)

python提供了很多用于循环的技巧,这些方法能让代码更加简洁美观,这次就来扒一扒。

1enumerate()函数当遍历一个非数值序列时,有时候会需要将元素和索引一起取出,这时候便可以用到enumerate()函数。enumerate()函数接受一个序列或者迭代器,返回一个元组,里面包含元素及其索引数值。>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']>>> list(enumerate(seasons))[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]你还可以通过调整start参数,规定序列数值的起始值:

>>> list(enumerate(seasons, start=1))[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]这时候用for循环遍历enumerate()函数包装后的序列,就能得到元素及其索引值:>>> for i, v in enumerate(['tic', 'tac', 'toe']):...     print(i, v)...0 tic1 tac2 toe

2字典item()方法遍历字典时,如果直接遍历字典对象,只能得到字典中的键:>>> sample = {'a':1,'b':2,'c':3}>>> for i in sample:...     print(i)...abc如果使用字典的items()方法,便可以同时输出键和对应值:

>>> sample = {'a':1,'b':2,'c':3}>>> for i in sample.items():...     print(i)...('a', 1)('b', 2)('c', 3)

3zip()函数zip()函数接收一个或多个可迭代对象,并将各个迭代对象对应的元素聚合,返回一个元组的迭代器。>>> x = [1, 2, 3]>>> y = [4, 5, 6]>>> zipped = zip(x, y)>>> list(zipped)[(1, 4), (2, 5), (3, 6)]当同时在两个或更多序列中循环时,可以用zip()函数将其内元素一一匹配。>>> color = ['white','blue','black']>>> animal = ['cat','dog','pig']>>> for i in zip(animal,color):...     print(i)...('cat', 'white')('dog', 'blue')('pig', 'black')

4sorted()函数当你需要对列表先进行排序再循环遍历时,就需要用到sorted()函数。

sorted()函数接收一个可迭代对象,返回一个排序好的列表。

除此之外,sorted()函数还有两个参数:key和reversekey 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如key=str.lower)。默认值为None(直接比较元素)

reverse 为一个布尔值。如果设为True,则每个列表元素将按反向顺序比较进行排序。

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']>>> for f in sorted(set(basket)):...     print(f)...applebananaorangepear

5reversed()函数reversed()函数用于对可迭代对象中的元素进行反向排列,返回一个逆向的迭代器。>>> list(reversed([2,5,3,9,6]))[6, 9, 3, 5, 2]for循环遍历reversed()函数包装的可迭代对象,便可以反向取数。>>> for i in reversed([2,5,3,9,6]):...     print(i)...69352

总结:本文讲解了五个用于for循环的小技巧,它们分别是enumerate()、item()、zip()、sorted()、reversed(),这些方法函数不仅让循环更加简洁,更能用在其它诸多的代码中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值