详解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 相关文章推荐
如何搜索查找并解决Django相关的问题
Jun 30 Python
Python中的ConfigParser模块使用详解
May 04 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
分析python请求数据
Aug 19 Python
对Python 内建函数和保留字详解
Oct 15 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
python logging通过json文件配置的步骤
Apr 27 Python
想学画画?python满足你!
Dec 24 Python
python如何用matplotlib创建三维图表
Jan 26 Python
使用python实现学生信息管理系统
Feb 25 Python
python数字图像处理之图像的批量处理
Jun 28 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
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
jQuery的deferred对象使用详解
2011/08/20 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
angular select 默认值设置方法
2017/06/23 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python实现备份文件实例
2014/09/16 Python
python中循环语句while用法实例
2015/05/16 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
解决python 文本过滤和清理问题
2019/08/28 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
python如何爬取网页中的文字
2020/07/28 Python
python urllib和urllib3知识点总结
2021/02/08 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
毕业生求职信范文
2014/06/29 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫