详解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框架中处理URLconf中特定的URL的方法
Jul 20 Python
python实现文本文件合并
Dec 29 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
Python3 读取Word文件方式
Feb 13 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
详解Django配置JWT认证方式
May 09 Python
python如何输出反斜杠
Jun 18 Python
Python保存并浏览用户的历史记录
Apr 29 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php生成WAP页面
2006/10/09 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
laravel自定义分页效果
2017/07/23 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
Python中一行和多行import模块问题
2018/04/01 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
信用社员工先进事迹材料
2014/02/04 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
2015年教学工作总结
2015/04/02 职场文书
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技