详解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实现探测socket和web服务示例
Mar 28 Python
Python中自定义函数的教程
Apr 27 Python
python实现员工管理系统
Jan 11 Python
python的socket编程入门
Jan 29 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python底层封装实现方法详解
Jan 22 Python
python json load json 数据后出现乱序的解决方案
Feb 27 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
极典R601SW收音机
2021/03/02 无线电
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
Vue中props的详解
2019/05/16 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
Python实现list反转实例汇总
2014/11/11 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
体育教育个人自荐信范文
2013/12/01 职场文书
大学生最常用的自我评价
2013/12/07 职场文书
服装采购员岗位职责
2014/03/15 职场文书
大学生简历求职信
2014/06/24 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
民事诉讼代理词
2015/05/25 职场文书