• python迭代器


    本篇将介绍Python的迭代,更多内容请参考:Python学习指南

    简介

    在Python中,如果给定一个list或者tuple,我们可以通过for循环来遍历这个list或者tuple,这种遍历我们称为迭代(Iteration)
    在Python中,迭代是for...in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码:

    for(i=0; i<list.length; i++){
        n = list[i]
    } 
    

    可以看出,Python的for循环抽象程度要高于Java的for循环
    因为,Python的for循环不仅可以用在list或tuple上,还可以用在任何可迭代对象上。
    那么,可迭代对象有哪些呢?怎么判断一个对象是否是可迭代对象呢?可以用collections模板里面的iterable包的isinstance函数进行判断:

    >>>from collections import Iterable  #载入模块
    >>>isinstance('abc', Iterable)  #字符串是可迭代对象吗?
    True
    >>> isinstance([1,2,3],Iterable) #list是可迭代对象吗?
    True
    >>> isinstance({'dede':123},Iterable) #字典是可迭代对象吗?
    True
    

    字典的迭代

    >>> d={'python':1,'php':2,'java':3}
    
    #默认迭代的是key
    >>> for i in d:
        print(i)
    python
    php
    java
    #自定义迭代key
    >>> for key in d.keys():
        print(key)
    python
    php
    java
    #迭代value
    >>> for value in d.values():
        print(value)
    2
    #同时迭代key,value
    >>> for k , v in d.items():
        print(k,v)
    python 1
    php 2
    java 3
    >>>
    

    列表和元祖包含下标的迭代

    #对于一个列表
    language = ['python', 'php', 'java', 'c++']
    
    #第一种
    for x in range(len(language)):
        print(x, language[x])
    #第二种
    for i, value in enumerate(language):
        print(i, value)
    #运行结果
    0 python
    1 php 
    2 java
    3 c++
    #在同一行输出:
    for i ,value in enumerate(lanage):
        print(i,value ,end=', ')
    结果:
    0 python, 1 php, 2 java, 3 c++,
    

    任何可迭代对象都可以作用与for循环,保活我们自定义的数据类型,只要符合迭代条件,就可以使用for循环

    参考

    廖雪峰-迭代

  • 相关阅读:
    一起talk C栗子吧(第一百二十六回:C语言实例--statickeyword)
    leetcode:程序猿面试技巧
    学习图像算法阶段性总结 (附一键修图Demo)
    KMP算法具体解释
    数据结构中的7种排序算法
    关于系统首页绘制问题(ext布局+c#后台加入数据)经html输出流输出响应client
    jumpserver 堡垒机环境搭建(图文具体解释)
    Android二维码工具zxing使用
    Oracle对没有主键的表分页
    Mondiran创建连接
  • 原文地址:https://www.cnblogs.com/miqi1992/p/7816775.html
Copyright © 2020-2023  润新知