美文网首页
Python学习之迭代

Python学习之迭代

作者: 己庚辛壬癸 | 来源:发表于2017-07-28 18:00 被阅读25次

    迭代和遍历

    迭代,会根据上次循环的结果调整本次结果。 遍历,只是简单地对所有的情况做循环。

    详细请看:漫谈递归:循环与迭代是一回事吗?

    什么对象可以迭代

    对于不清楚对象是否可以迭代,那么可以使用collections模块中的Iterable类型判断。

    >>> from collections import Iterable
    >>> isinstance("hahah", Iterable) //字符串
    True
    
    >>> isinstance(["o","m",0], Iterable) //list
    True
    
    >>> isinstance(("o","m",0), Iterable) //tuple
    True
    
    >>> dic = {0:25,"key":"m"}      //dict
    >>> isinstance(dic,Iterable)    
    True
    
    >>> isinstance(25, Iterable)    //整数
    False
    
    >>> isinstance(["o","m",0], iterable)
    Traceback (most recent call last):
      File "<pyshell#6>", line 1, in <module>
        isinstance(["o","m",0], iterable)
    NameError: name 'iterable' is not defined
    

    由上面的代码我们可以总结出:

    • 可以调用isinstance(x, Iterable)方法来判断x是否可迭代。
    • 字符串可以迭代。
    • list和tuple可以迭代。
    • dict也可以迭代。
    • 整数不能够迭代。
    • 调用方法时,第二个参数Iterable大小写敏感,如果写错,会报错。

    迭代的通用方式

    for ___ in object该句话为对object的迭代。

    list的迭代

    • 只获取元素值的迭代

      lis = [1,2,3,4,5]
      for num in list:
          print(num)
          
      //上面的程序会依次输出list中的元素
      
    • 带下标的迭代;想要迭代中得到下标,那么需要使用enumerate函数把list变成:下标-值 的组合。

      lis = [1,2,3]
      for index,value in enumerate(lis):
          print("%d:%d"%(index,value))
      
      //输出:
              0:1
              1:2
              2:3
      

    dict的迭代

    • dict默认的迭代

      dic = {"name":"lucy","age":25,"sex":"female"}
      for x in dic:
          print(x)
      

      上面的语句会输出(次序是根据hash值来的):name、age、sex,也就是说按照默认的方式对dict进行迭代得到的值是dict中的key。

    • 如何同时得到key和value

      dic = {"name":"lucy","age":25,"sex":"female"}
      for key,value in dic.items():
          print(key)
          print(value)
          
      //输出为:
      name
      lucy
      age
      25
      sex
      female
      
    • 单独得到key

      ①使用默认的迭代方式
      
      ②
      dic = {"name":"lucy","age":25,"sex":"female"}
      for value in dic.keys():
          print(value)
      
    • 单独得到value

      dic = {"name":"lucy","age":25,"sex":"female"}
      for value in dic.values():
          print(value)
      

    字符串的迭代

    name = "Jay Chou" 
    for ch in name:
        print(ch)
        
    //输出:
    J
    a
    y
     
    C
    h
    o
    u
    

    总结

    Python中的很多对象都能够迭代,非常方便的帮我们完成了复杂的循环操作。

    相关文章

      网友评论

          本文标题:Python学习之迭代

          本文链接:https://www.haomeiwen.com/subject/pqyflxtx.html