当前位置: 首页 > news >正文

python迭代对象是什么意思_python之中的迭代与迭代对象是什么?

在以下的文章之中我们来了解一下python之中的迭代。了解一下迭代是什么意思,以及在python的编程之中迭代能起到什么样的作用。

什么是python的迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

(在Python中,迭代是通过for ... in来完成的)

Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。

(可以直接作用于for循环的对象统称为可迭代对象(Iterable),如list、tuple、dict、set、str等。)

list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是python的可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:>>> d = {'a': 1, 'b': 2, 'c': 3}

>>> for key in d:... print(key)

...

a

c

b

因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。

由于字符串也是可迭代对象,因此,也可以作用于for循环:>>> for ch in 'ABC':

... print(ch)

...ABC

所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:>>> from collections import Iterable

>>> isinstance('abc', Iterable) # str是否可迭代

True

>>> isinstance([1,2,3], Iterable) # list是否可迭代

True

>>> isinstance(123, Iterable) # 整数是否可迭代

False

最后一个小问题,如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:>>> for i, value in enumerate(['A', 'B', 'C']):

... print(i, value)

...

0 A

1 B

2 C

上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:>>> for x, y in [(1, 1), (2, 4), (3, 9)]:

... print(x, y)

...

1 1

2 4

3 9

以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了相关于python中迭代和迭代对象的知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松。

更多相关知识,请访问Gxl网Python教程栏目。

相关文章:

  • 旧物手工机器人制作图片_科技小发明手工,DIY电池机器人制作图解教程
  • 概率密度变换公式 雅可比矩阵_【转载】雅克比矩阵与雅克比行列式
  • win10蓝牙已配对连接不上_win10系统蓝牙已配对但未连接的解决方法
  • lua协程 unity_Unity ToLua LuaFramework_UGUI学习笔记
  • 创建图表_如何在Confluence中创建Jira报表和图表
  • docker内存阀值_有关Docker的八个令人难以置信的事实
  • bootstrap modal填充数据_layui后台管理—table 数据表格详细讲解
  • go 取出json对象的某个值_用Go语言之前,先看看它的利与弊吧
  • 学python的软件开发人员_学python用什么开发软件?
  • mysql中横竖转换_mysql数据库字符编码总结--数据传输编码
  • 模式代码 java中aes_建造者模式和原型模式在开源代码中的应用
  • form表ge实例 html_从零开始学Vue(二~三)—— Vue 实例 / 模板语法(插值、指令)...
  • python 图像宽度_在python中创建具有一定宽度边框的图像
  • print输出 pytorch_60题PyTorch简易入门指南,做技术的弄潮儿??
  • 如何使用conda安装的nvcc_防爆配电箱如何安装、使用?
  • @angular/forms 源码解析之双向绑定
  • __proto__ 和 prototype的关系
  • Android交互
  • CODING 缺陷管理功能正式开始公测
  • Leetcode 27 Remove Element
  • Puppeteer:浏览器控制器
  • python 装饰器(一)
  • vue 配置sass、scss全局变量
  • vue中实现单选
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 彻底搞懂浏览器Event-loop
  • 普通函数和构造函数的区别
  • 实习面试笔记
  • 物联网链路协议
  • 学习笔记TF060:图像语音结合,看图说话
  • 智能合约Solidity教程-事件和日志(一)
  • Java总结 - String - 这篇请使劲喷我
  • 阿里云重庆大学大数据训练营落地分享
  • ​虚拟化系列介绍(十)
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #include<初见C语言之指针(5)>
  • (12)Hive调优——count distinct去重优化
  • (13)Hive调优——动态分区导致的小文件问题
  • (4.10~4.16)
  • (C#)一个最简单的链表类
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (定时器/计数器)中断系统(详解与使用)
  • (实战篇)如何缓存数据
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ./configure,make,make install的作用
  • .a文件和.so文件
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net Winform开发笔记(一)
  • .net 程序发生了一个不可捕获的异常
  • .net 无限分类
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .net项目IIS、VS 附加进程调试