通过for循环来遍历 list、tuple、dict、甚至是字符串,这种遍历被称为迭代。

相比于C的for循环, Python的for循环抽象成都更好,不仅可以用在list或tuple上,还可以用在其他可迭代对象上。
 
虽然list有下标(支持 list[0]、list[1] 调用),但是很多其他数据类型是没有下标的(如:dict),但只要是可迭代对象,无论是否有下标,都可以进行迭代。
举例dict:
        >>> a = {'a':1,'bc':2,'d':3,'1':4,'2':5,'3':6,'4':7,'5':8 }
        >>>
        >>> for i in a:
        ...     print(i)
        ...
        a
        5
        d
        4
        1
        3
        2
        bc
    由于dict的存储不是按照list的方式进行顺序排列,所以迭代的结果顺序可能不同。

dict迭代:
    默认情况下,dict迭代的是key , 如果要迭代value,可以使用 dictname.value() 的方式来表示value, 如果要同时迭代key和value,可以使用 dictname.items()
当使用for循环时,只要作用于一个可迭代对象,就可以正常运行,不用太关心该对象究竟是list还是其他数据类型。
 
下标循环:
    可以引入python内置函数 enumerate , 把一个list变成索引-元素 对, 这样就可以再for循环中同时迭代索引和元素本身了:
            >>> a = ['a','b','c','d','e']
            >>> for inode,value in enumerate(a):
            ...     print(inode,value)
            ...
            0 a
            1 b
            2 c
            3 d
            4 e
 
for循环里引入多个变量:
            >>> a = [(1,2),(3,4),(5,6),(7,8)]
            >>> for i,j in a:
            ...     print(i,j)
            ...
            1 2
            3 4
            5 6
            7 8
    不过如果不加小括号, 就报错了。(后续学习找答案)
    使用一个变量时:
            >>> a = [(1,2),(3,4),(5,6),(7,8)]
            >>> a[0]
            (1, 2)
            >>> for i in a:
            ...     print(i)
            ...
            (1, 2)
            (3, 4)
            (5, 6)
            (7, 8)
        期待后续学习过程中能搞懂二者各自适合在哪里。

附加:
    判断一个对象是否可迭代:通过collections模块的iterable类型。
   
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

练习: 用迭代查找list中最小值和最大值:
def findMinAndMax(L):
    if len(L) == 0:
        return (None, None)
    else:
        max = L[0]
        min = L[0]
        for i in L:
            if  i > max:
                max = i
            elif i < min:
                min = i
        return (min, max)
#验证
if findMinAndMax([]) != (None, None):
    print('测试失败1!')
elif findMinAndMax([7]) != (7, 7):
    print('测试失败2!')
elif findMinAndMax([7, 1]) != (1, 7):
    print('测试失败3!')
elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
    print('测试失败4!')
else:
    print('测试成功5!')

Day8 python高级特性-- 迭代 Iteration的更多相关文章

  1. Python高级特性——迭代(Iteration)

    1.给定一个集合list或者tuple,可以通过for …… in ……的语法来实现循环遍历,这个循环我们就叫做迭代 迭代list: >>> m = ['haha','hehe',' ...

  2. python高级特性-迭代

    概述 for  v   in d.values(): for k,v  in d.items(): for  a    in 'adfa': #判断对象是否可迭代 from collections i ...

  3. 三、python高级特性(切片、迭代、列表生成器、生成器)

    1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3]  #即为['Mli','add','sal']  从索引0开始 ...

  4. python高级特性:切片/迭代/列表生成式/生成器

    廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...

  5. Python 高级特性介绍 - 迭代的99种姿势 与协程

    Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...

  6. Python高级特性(1):Iterators、Generators和itertools(转)

    译文:Python高级特性(1):Iterators.Generators和itertools [译注]:作为一门动态脚本语言,Python 对编程初学者而言很友好,丰富的第三方库能够给使用者带来很大 ...

  7. Python高级特性之:List Comprehensions、Generator、Dictionary and set ...

    今天帅气的易哥和大家分享的是Pyton的高级特性,希望大家能和我一起学习这门语言的魅力. Python高级特性之:List Comprehensions.Generator.Dictionary an ...

  8. python高级特性和高阶函数

    python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...

  9. Python高级特性(3): Classes和Metaclasses(转)

    原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...

随机推荐

  1. IDA-hook so层方法与java之间的映射关键

    第一步 1.首先用ida打开so文件 第二步 第三步

  2. 控制算法PID-理解分析1

    以下内容是来自网络上的,本人觉得有道理,拷贝下来,由于没有找到最源头的出处,没有注明来自何方. 转载,下面说法应该更通俗易懂一家庭,每次需要开支的时候丈夫P都要拿卡去取钱.需要多少取多少,因为银行最低 ...

  3. 数据结构实训——哈夫曼(Huffman)编/译码器

    题目4.哈夫曼(Huffman)编/译码器(限1人完成) [问题描述] 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本.但是,这要求在发送端通过一个编码系统对待传数据预先 ...

  4. Leetcode 1329. 将矩阵按对角线排序 题解

    首先遍历对角线元素,顺序为: 先从第一列的最后一行到第一行 然后从第一行的第一列到最后一列 遍历的同时记录坐标和数值,对数值进行排序,然后坐标顺序放回. class Solution: def dia ...

  5. Maven一定要会的这几个知识!

    一.Maven概念 Maven是一个项目管理和整合工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为Maven使用了一个标准的目 ...

  6. ABBYY FineReader 14扫描和保存文档

    在ABBYY FineReader 14中您可以使用扫描"新建任务"窗口选项卡上的内置任务创建各种格式的数字文档.本文介绍使用FineReader 14扫描和保存文档的方法. 1. ...

  7. FL studio系列教程(十六):FL Studio查看菜单讲解

    FL Studio中每个窗口的显示.隐藏和布局命令都在查看菜单中.其中它被分为窗口.布局和浏览器3个部分,各项名称都有其单独的作用.窗口部分主要是软件的显示的一些菜单这里就不详细讲解了,接下来我们重点 ...

  8. centos 7 安装zabbix-4.0

    第一步:安装nginx ############安装Nginx###########yum localinstall http://nginx.org/packages/centos/7/noarch ...

  9. idea中安装阿里巴巴的代码规范插件

    1.打开iead软件,从左上角点击File  ->  Settings  ->  Plugins 2.安装完成后,重启idea软件,即可正常使用了.

  10. Linux 设置静态路由表

    一般来说多半不会使用到这个操作,但是最近有几台服务器需要多网卡,一个内网一个外网.导致网络访问内网有时候不通,这就需要我们手动写一下路由表了.操作如: 创建配置文件 网卡配置路径:/etc/sysco ...