详解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中的TCP及UDP(详解)
Nov 06 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
python实现停车管理系统
Nov 30 Python
python实现整数的二进制循环移位
Mar 08 Python
postman传递当前时间戳实例详解
Sep 14 Python
python 实现return返回多个值
Nov 19 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
在python中修改.properties文件的操作
Apr 08 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
深入浅出php socket编程
2015/05/13 PHP
php事件驱动化设计详解
2016/11/10 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
Python的Flask框架的简介和安装方法
2015/11/13 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
高级工程师岗位职责
2013/12/15 职场文书
高中同学会活动方案
2014/08/14 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技