📜  Python中的循环技术

📅  最后修改于: 2020-01-17 13:36:36             🧑  作者: Mango

Python通过某些内置函数在各种顺序容器中支持各种循环技术。这些方法在竞争性编程中非常有用,在各种项目中也非常有用,这些项目需要使用特定技术并使用循环来维护代码的整体结构。
它们在哪里使用?
在我们不需要实际操作整个容器的结构和顺序的地方,不同的循环技术主要为单个使用实例打印元素,而在容器中不会发生就地更改。这也可以在实例中使用,以节省时间。
使用Python数据结构的不同循环技术是:

  • 使用enumerate():   enumerate()用于遍历打印索引号以及该特定索引中存在的值。
    # Python代码,展示enumerate()如何工作
    for key, value in enumerate(['芒', '果', '文', '档']):
        print(key, value)

    输出:

    0 芒
    1 果
    2 文
    3 档

    使用zip():  zip()用于组合2个类似的容器(list-list或dict-dict),依次打印值。该循环直到较小的容器结束遍历为止。

    # Python代码,展示zip() 使用方法
    # 初始化
    questions = ['name', 'colour', 'shape']
    answers = ['apple', 'red', 'a circle']
    # 使用 zip() 把两个list关联起来
    # and print values
    for question, answer in zip(questions, answers):
        print('什么是 {0}?  I am {1}.'.format(question, answer))
    

    输出:

    什么是 name?  I am apple.
    什么是 color?  I am red.
    什么是 shape?  I am a circle.
  • 使用iteritem():  iteritems()用于遍历字典,顺序打印字典键-值对。
  • 使用items():  items()在字典上执行的任务与iteritems()类似,但与iteritems()相比有某些缺点。
    • 非常耗时。在大型词典上调用它会消耗大量时间。
    • 这需要很多内存。在字典上调用时,有时会占用双倍的内存。
  • 范例1:
    # Python代码。展示iteritems(),items()
    d = { "芒果" : "for", "only" : "芒果" }
    # 使用iteritems打印键值对
    print ("使用iteritems的键值对 : ")
    for i,j in d.iteritems():
        print i,j
    # 使用items打印键值对
    print ("使用items的键值对 : ")
    for i,j in d.items():
        print i,j

    输出:

    使用iteritems的键值对 :
    芒果 for
    only 芒果
    使用items的键值对 is :
    芒果 for
    only 芒果

    范例2:

    # Python代码,展示如何使用items()
    # 初始化dict
    king = {'Akbar': 'The Great', 'Chandragupta': 'The Maurya',
            'Modi' : 'The Changer'}
    # 使用items打印键值对
    for key, value in king.items():
        print(key, value)

    输出:

    Akbar The Great
    Modi The Changer
    Chandragupta The Maurya

    注意:iteritems()已从Python 3.x中删除,仅在Python 2.x中有效,请使用dict.items()。

      • 使用sorted():   sorted()用于打印已排序容器。它不会对容器进行就地替换排序,而只会按1个实例的排序顺序打印容器。可以结合使用set()来删除重复的事件。
      • 使用reversed():  reversed()用于按声明的降序打印容器的值。
    • 范例1:
      # Python代码展示如何使用 sorted()
      # 初始化list
      lis = [ 1 , 3, 5, 6, 2, 1, 3 ]
      # 使用 sorted()打印排序好的list
      print ("排序好的list : ")
      for i in sorted(lis) :
          print (i,end=" ")
      print ("\r")
      # 使用 sorted()和set()打印排序好的list
      # use of set() removes duplicates.
      print ("排序好的list(无重复元素) : ")
      for i in sorted(set(lis)) :
          print (i,end=" ")

      输出:

      排序好的list :
      1 1 2 3 3 5 6
      排序好的list(无重复元素) :
      1 2 3 5 6

      范例2:

      # Python代码,展示如何使用sorted()
      # 初始化list
      basket = ['guave', 'orange', 'apple', 'pear',
                'guava', 'banana', 'grape']
      # 使用sorted()和set()打印list
      for fruit in sorted(set(basket)):
          print(fruit)/* Your code... */

      输出:

      apple
      banana
      grape
      guava
      guave
      orange
      pear

      范例1:

      # Python 代码,展示如何使用reversed()
      # 初始化list
      lis = [ 1 , 3, 5, 6, 2, 1, 3 ]
      # 使用revered()打印反转的list
      print ("list反转后 : ")
      for i in reversed(lis) :
          print (i,end=" ")

      输出:

      list反转后 :
      3 1 2 6 5 3 1

      范例2:

      # Python代码,展示reversed()如何工作
      # 使用reversed()打印反转的list
      for i in reversed(range(1, 10, 3)):
          print (i)

      输出:

      7
      4
      1

      与for,while循环相比,使用上述技术的优势

      • 这些技术易于使用,并减少了编码的复杂度并提高了可读性。因为循环需要更改容器的整个结构。
      • 这些循环技术不需要对容器进行任何结构更改。它们具有表示使用的确切目的的关键字。而对于循环,若一眼不容易理解的目的,则无法进行任何预测或猜测。
      • 循环技术使代码比在循环时使用for更为简洁。