详解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自动zip压缩目录的方法
Jun 28 Python
python+opencv实现动态物体识别
Jan 09 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
Django上线部署之IIS的配置方法
Aug 22 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
python中print格式化输出的问题
Apr 16 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
十天学会php之第四天
2006/10/09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
Django自定义认证方式用法示例
2017/06/23 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
Python装饰器简单用法实例小结
2018/12/03 Python
Python3中exp()函数用法分析
2019/02/19 Python
Python实现微信小程序支付功能
2019/07/25 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
python中wx模块的具体使用方法
2020/05/15 Python
Python中logger日志模块详解
2020/08/04 Python
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
总经理助理岗位职责
2013/11/08 职场文书
幼儿教师求职信
2014/05/24 职场文书
现场活动策划方案
2014/08/22 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python