zoukankan      html  css  js  c++  java
  • 枚举函数(eumererate)

    python-enumerate枚举函数

    enumerate 函数用于遍历序列中的元素以及它们的下标:

    >>> for i,j in enumerate(('a','b','c')):
     print i,j

    0 a
    1 b
    2 c


    >>> for i,j in enumerate([1,2,3]):
     print i,j

    0 1
    1 2
    2 3


    >>> for i,j in enumerate({'a':1,'b':2}):
     print i,j

    0 a
    1 b

    >>> for i,j in enumerate('abc'):
     print i,j

    0 a
    1 b
    2 c

    Python中常见的序列主要有列表(list)、元组(tuple)和字符串(string)。关对于序列的遍历,Python推荐的是for…in…sequence语句做成员测试,这个语句其实和for…in…range()一样是按照索引顺序遍历的,但是用in语句的话不能直接使用索引值。

    在实际应用中,遍历经常也要用到索引值,比如计数,统计进度等等。用range的话怎么看着都麻烦,其实可以使用enumerate()函数。

    enumerate的意思是列举、枚举。

    enumerate()函数时Python的内置函数。

    原理分析

    基本用法

    s = [2,5,8,3,6,9]
    for i in enumerate(s):
        print i
    • 1
    • 2
    • 3

    结果为:

    (0, 2)
    (1, 5)
    (2, 8)
    (3, 3)
    (4, 6)
    (5, 9)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    按照一般的序列迭代方法,可以看出enumerate()函数的返回值是一个元组,元组构成为(index, value),也就是序列索引和值的元组。

    第二可选参数,解决索引从0开始输出的问题

    enumerate()有两个参数序列和起始索引。 
    即enumerate(sequence , index)

    s = [2,5,8,3,6,9]
    for i in enumerate(s, 1):
        print i
    • 1
    • 2
    • 3

    结果为:

    (1, 2)
    (2, 5)
    (3, 8)
    (4, 3)
    (5, 6)
    (6, 9)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这样就解决了索引从0开始,而我们习惯从1开始输出的问题。

    示例

    下面以常见的序列,列表、元组、字符串为例简单说明enumerate()的使用方法。

    示例1 列表

    s = [2,5,8,3,6,9]
    for index, value in enumerate(s):
        print index, value
    • 1
    • 2
    • 3

    结果为:

    0 2
    1 5
    2 8
    3 3
    4 6
    5 9
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例2 元组

    s = (2,5,8,3,6,9)
    for index, value in enumerate(s):
        print index, value
    • 1
    • 2
    • 3

    结果为:

    0 2
    1 5
    2 8
    3 3
    4 6
    5 9
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例3 字符串

    s = 'test'
    for index, value in enumerate(s):
        print index, value
    • 1
    • 2
    • 3

    结果为:

    0 t
    1 e
    2 s
    3 t
  • 相关阅读:
    用于展现图表的50种JavaScript库
    EditPlus常用正则表达式
    人工智能生成仿真人脸
    树莓派搭建SVN服务器
    JS三座大山再学习 ---- 异步和单线程
    JS三座大山再学习 ---- 作用域和闭包
    基于C#的MongoDB数据库开发应用(2)--MongoDB数据库的C#开发
    基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
    大数据高效复制的处理案例分析总结
    基于DevExpress的Winform程序安装包的制作
  • 原文地址:https://www.cnblogs.com/yueyuanyi/p/9375556.html
Copyright © 2011-2022 走看看