详解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局域网ip扫描示例分享
Apr 03 Python
Python编程中运用闭包时所需要注意的一些地方
May 02 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python编程求质数实例代码
Jan 31 Python
Python unittest模块用法实例分析
May 25 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Python Pillow Image Invert
Jan 22 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
Python queue队列原理与应用案例分析
Sep 27 Python
Cython编译python为so 代码加密示例
Dec 23 Python
解决tensorflow添加ptb库的问题
Feb 10 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
PHP反射实际应用示例
2019/04/03 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
Python中用format函数格式化字符串的用法
2015/04/08 Python
python提取页面内url列表的方法
2015/05/25 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
利用Python优雅的登录校园网
2020/10/21 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
高二化学教学反思
2016/02/22 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
nginx请求限制配置方法
2021/07/09 Servers
redis protocol通信协议及使用详解
2022/07/15 Redis