前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文搞懂Python循环的技巧

一文搞懂Python循环的技巧

作者头像
Python大数据分析
发布2022-04-02 19:41:07
5050
发布2022-04-02 19:41:07
举报

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

代码语言:javascript
复制
for i in range(10):    
    print(i)

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

1

enumerate()函数

当遍历一个非数值序列时,有时候会需要将元素和索引一起取出,这时候便可以用到enumerate()函数。

enumerate()函数接受一个序列或者迭代器,返回一个元组,里面包含元素及其索引数值。

代码语言:javascript
复制
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']>>> list(enumerate(seasons))[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

你还可以通过调整start参数,规定序列数值的起始值:

代码语言:javascript
复制
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

这时候用for循环遍历enumerate()函数包装后的序列,就能得到元素及其索引值:

代码语言:javascript
复制
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

2

字典item()方法

遍历字典时,如果直接遍历字典对象,只能得到字典中的键:

代码语言:javascript
复制
>>> sample = {'a':1,'b':2,'c':3}
>>> for i in sample:
...     print(i)
...
a
b
c

如果使用字典的items()方法,便可以同时输出键和对应值:

代码语言:javascript
复制
>>> sample = {'a':1,'b':2,'c':3}
>>> for i in sample.items():
...     print(i)
...
('a', 1)
('b', 2)
('c', 3)

3

zip()函数

zip()函数接收一个或多个可迭代对象,并将各个迭代对象对应的元素聚合,返回一个元组的迭代器。

代码语言:javascript
复制
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]

当同时在两个或更多序列中循环时,可以用 zip() 函数将其内元素一一匹配。

代码语言:javascript
复制
>>> color = ['white','blue','black']
>>> animal = ['cat','dog','pig']
>>> for i in zip(animal,color):
...     print(i)
...
('cat', 'white')
('dog', 'blue')
('pig', 'black')

4

sorted()函数

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

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

除此之外,sorted()函数还有两个参数:key和reverse

key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。默认值为 None (直接比较元素) reverse 为一个布尔值。如果设为 True,则每个列表元素将按反向顺序比较进行排序。

代码语言:javascript
复制
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

5

reversed()函数

reversed()函数用于对可迭代对象中的元素进行反向排列,返回一个逆向的迭代器。

代码语言:javascript
复制
>>> list(reversed([2,5,3,9,6]))
[6, 9, 3, 5, 2]

for循环遍历reversed()函数包装的可迭代对象,便可以反向取数。

代码语言:javascript
复制
>>> for i in reversed([2,5,3,9,6]):
...     print(i)
...
6
9
3
5
2

总结:

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

本文参考Python官方文档

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档