详解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中列表、字典、元组、集合数据结构整理
Nov 20 Python
举例详解Python中yield生成器的用法
Aug 05 Python
Python从零开始创建区块链
Mar 06 Python
Django渲染Markdown文章目录的方法示例
Jan 02 Python
python开启debug模式的方法
Jun 27 Python
python hough变换检测直线的实现方法
Jul 12 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Python pip安装模块提示错误解决方案
May 22 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
python中entry用法讲解
Dec 04 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 JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
jupyter安装小结
2016/03/13 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python 默认参数相关知识详解
2019/09/18 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Python和Bash结合在一起的方法
2020/11/13 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
暑假实习求职信范文
2013/09/22 职场文书
应聘医学检验人员自荐信
2013/09/27 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers