详解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常用内置函数总结
Feb 08 Python
Python中的高级数据结构详解
Mar 27 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
python中requests和https使用简单示例
Jan 18 Python
Python实现的读写json文件功能示例
Jun 05 Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
如何用Python提取10000份log中的产品信息
Jan 14 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跨站攻击实例分析
2014/10/28 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
优秀幼教自荐信
2014/02/03 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
英文慰问信范文
2015/03/24 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
雷锋之歌观后感
2015/06/10 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
解决go在函数退出后子协程的退出问题
2021/04/30 Golang