详解Python中的for循环


Posted in Python onApril 30, 2022

Python的 for 循环

Python 是基于集合的迭代。

for <var> in <iterable>: # <iterable>是对象的集合——例如,列表或元组。
    <statement(s)> # 循环体

a = ['曹操', '孫権', '劉備']
for i in a:
    print(i)

输出:

曹操
孫権
劉備

可迭代对象 ,可以被传递给内置的 Python 函数 iter() 处理,返回做迭代器

iter('曹操孫権')                             # String
<str_iterator object at 0x036E2750>

iter(['曹操', '孫権', '劉備'])                # List
<list_iterator object at 0x036E27D0>

iter(('曹操', '孫権', '劉備'))                # Tuple
<tuple_iterator object at 0x036E27F0>

iter({'曹操', '孫権', '劉備'})                # Set
<set_iterator object at 0x036DEA08>

iter({'曹操': 1, '孫権': 2, '劉備': 3})       # Dict
<dict_keyiterator object at 0x036DD990>

不可以迭代的对象

iter(1)                                   # Integer
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

iter(1.1)                                  # Float
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'float' object is not iterable

iter(len)                                  # Built-in function
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is not iterable

迭代器,是一个值生产者,从其关联的可迭代对象中产生连续的值。内置函数 next() 用于从迭代器中获取下一个值。

list_ = ['曹操', '孫権', '劉備']

itr = iter(list_ )
itr
<list_iterator object at 0x031EFD10>

next(itr)
'曹操'
next(itr)
'孫権'
next(itr)
'劉備'

使用内置 list()、tuple() 和 set() 函数一次从迭代器中获取所有值。

list_ = ['曹操', '孫権', '劉備']
itr = iter(list_)
list(itr)
['曹操', '孫権', '劉備']

itr = iter(list_)
tuple(itr)
('曹操', '孫権', '劉備')

itr = iter(list_)
set(itr)
{'劉備', '曹操', '孫権'}

详解Python中的for循环

遍历字典

字典的遍历循环,循环变量被分配给字典的键。

d = {'曹操': 1, '孫権': 2, '劉備': 3}

for k in d:
    print(k)

输出:

曹操
孫権
劉備

访问字典值的操作

for k in d:
    print(d[k])

#输出:
#1
#2
#3

for v in d.values():
    print(v)

#输出:
#1
#2
#3

同时遍历字典的键和值。循环变量 for 不限于单个变量,可以是元组。

i, j = (1, 2)

print(i, j)
1 2

for i, j in [(1, 2), (3, 4), (5, 6)]:
    print(i, j)

输出:

1 2
3 4
5 6

字典方法 items() 有效地将键/值对列表作为元组返回。

d = {'曹操': 1, '孫権': 2, '劉備': 3}

d.items()
dict_items([('曹操', 1), ('孫権', 2), ('劉備', 3)])

d = {'曹操': 1, '孫権': 2, '劉備': 3}
for k, v in d.items():
    print('k =', k, ', v =', v)

输出:

k = 曹操 , v = 1
k = 孫権 , v = 2
k = 劉備 , v = 3

range()功能

Python 提供了内置range()函数,返回一个产生整数序列的迭代。

详解Python中的for循环

range(<end>)返回一个产生以0开头的整数的迭代,直到<end>但不包括<end>数值

x = range(5)
x
range(0, 5)
type(x)
<class 'range'>

range对象是可迭代的,所以可以通过for循环遍历它们来获取值。

for n in x:
    print(n)

输出:

0
1
2
3
4

list() 、tuple() 一次获取所有的循环遍历的值。

list(x)
[0, 1, 2, 3, 4]

tuple(x)
(0, 1, 2, 3, 4)

range(<start>, <end>, <step>)返回一个迭代结果。

list(range(5, 20, 3))
[5, 8, 11, 14, 17]

# 默认为1
list(range(5, 10, 1))
[5, 6, 7, 8, 9]

list(range(5, 10))
[5, 6, 7, 8, 9]

# 数值范围必须是可以正向迭代
list(range(-5, 5))
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]

list(range(5, -5))
[]

list(range(5, -5, -1))
[5, 4, 3, 2, 1, 0, -1, -2, -3, -4]

break语句 和continue语句

break 完全终止循环。

for i in ['曹操', '孫権', '劉備']:
    if '孫' in i:
        break
    print(i)

输出:

曹操

continue 终止当前迭代并进行下一次迭代。

for i in ['曹操', '孫権', '劉備']:
    if '孫' in i:
        continue
    print(i)

输出:

曹操
劉備

else语句

for 循环的子句 else,类似于 while 循环的使用。

for i in ['曹操', '孫権', '劉備']:
    print(i)
else:
    print('结束。')

输出:

曹操
孫権
劉備
结束。

else 如果列表被一条语句 break,则不会执行。

for i in ['曹操', '孫権', '劉備']:
    if i == '孫権':
        break
    print(i)
else:
    print('结束。')

输出:

曹操

到此这篇关于详解Python中for循环的定义迭代方法的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
Python在Console下显示文本进度条的方法
Feb 14 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
关于Python的一些学习总结
May 25 Python
Linux 修改Python命令的方法示例
Dec 03 Python
Python中dict和set的用法讲解
Mar 28 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
如何使用python把ppt转换成pdf
Jun 29 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
python 下划线的不同用法
Oct 24 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
Python采集壁纸并实现炫轮播
Apr 30 #Python
Python循环之while无限迭代
如何Python使用re模块实现okenizer
Apr 30 #Python
如何使用python包中的sched事件调度器
Apr 30 #Python
详解OpenCV获取高动态范围(HDR)成像
详解OpenCV曝光融合
python使用shell脚本创建kafka连接器
Apr 29 #Python
You might like
通达OA公共代码 php常用检测函数
2011/12/14 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python多线程抓取天涯帖子内容示例
2014/04/03 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python ldap实现登录实例代码
2016/09/30 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python做接口测试的必要性
2019/11/20 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
基于Python实现粒子滤波效果
2020/12/01 Python
飞利浦法国官网:Philips法国
2019/07/10 全球购物
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
网络技术专业推荐信
2014/02/20 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
2015年检验科工作总结
2015/04/27 职场文书
火烧圆明园观后感
2015/06/03 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL