详解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 时间操作例子和时间格式化参数小结
Apr 24 Python
从零学python系列之从文件读取和保存数据
May 23 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
python使用matplotlib绘制柱状图教程
Feb 08 Python
sublime text 3配置使用python操作方法
Jun 11 Python
python SMTP实现发送带附件电子邮件
May 22 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
python中对数据进行各种排序的方法
Jul 02 Python
python在地图上画比例的实例详解
Nov 13 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
浅谈php调用python文件
2019/03/29 PHP
ScrollDown的基本操作示例
2013/06/09 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python批量转换文件编码格式
2015/05/17 Python
pycham查看程序执行的时间方法
2018/11/29 Python
python实现网站微信登录的示例代码
2019/09/18 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
python生成大写32位uuid代码
2020/03/03 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
C语言变量的命名规则都有哪些
2013/12/27 面试题
寄语十八大感言
2014/02/07 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
敬老院标语
2014/06/27 职场文书
三严三实学习心得体会
2014/10/13 职场文书
趣味运动会开幕词
2015/01/28 职场文书
文明旅游倡议书
2015/04/28 职场文书
战马观后感
2015/06/08 职场文书
新生儿未入户证明
2015/06/23 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
Java8中接口的新特性使用指南
2021/11/01 Java/Android
MySQL创建管理HASH分区
2022/04/13 MySQL