详解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实现的双色球生成功能示例
Dec 18 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
python列表返回重复数据的下标
Feb 10 Python
python分别打包出32位和64位应用程序
Feb 18 Python
python实现简单俄罗斯方块
Mar 13 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
python中四舍五入的正确打开方式
Jan 18 Python
Python tkinter实现日期选择器
Feb 22 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
纯JS实现轮播图
2017/02/22 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
Python标准库内置函数complex介绍
2014/11/25 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
python中使用while循环的实例
2019/08/05 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
3的组成教学反思
2014/04/30 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
赞助商致辞
2015/07/30 职场文书
《搭石》教学反思
2016/02/18 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python