详解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实现异步回调机制代码分享
Jan 10 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
pygame实现简易飞机大战
Sep 11 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
基于python调用psutil模块过程解析
Dec 20 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
python数据爬下来保存的位置
Feb 17 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 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
yii2.0实现创建简单widgets示例
2016/07/18 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
Python3列表List入门知识附实例
2020/02/09 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
银行财务部实习生的自我鉴定
2013/11/27 职场文书
工地安全标语
2014/06/07 职场文书
销售岗位职责范本
2014/06/12 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
聊聊Python String型列表求最值的问题
2022/01/18 Python