1 列表list遍历的方法

1.1 按值遍历list

# -*- coding: utf-8 -*-

if __name__ == '__main__':
    my_list = ['hello','world','C++','python']

    for item in my_list:
        index = my_list.index(item)
        print('索引:{},值:{}'.format(index,item))

输出

索引:0,值:hello
索引:1,值:world
索引:2,值:C++
索引:3,值:python

这种for item in my_list的方法主要是对list中的值进行遍历,然后再通过值求解索引,不过如果list有两个相同的值时,通过list.index()方法求解索引可能会出现问题,比如

# -*- coding: utf-8 -*-

if __name__ == '__main__':
    my_list = ['hello','world','hello','python']

    for item in my_list:
        index = my_list.index(item)
        print('索引:{},值:{}'.format(index,item))

输出

索引:0,值:hello
索引:1,值:world
索引:0,值:hello
索引:3,值:python

这里出问题的是list中的第3个值hello的索引,list.index()一般是返回被查询的值第一次出现的索引,所以才导致上述索引出现错误。

1.2 根据list长度,按索引遍历list

# -*- coding: utf-8 -*-

if __name__ == '__main__':
    my_list = ['hello','world','hello','python']

    for i in range(len(my_list)):
        print('索引:{},值:{}'.format(i,my_list[i]))

输出

索引:0,值:hello
索引:1,值:world
索引:2,值:hello
索引:3,值:python

1.3 使用enumerate,返回(index,value)遍历list - 推荐方法

# -*- coding: utf-8 -*-

if __name__ == '__main__':
    my_list = ['hello','world','hello','python']

    for idx,val in enumerate(my_list):
        print('索引:{},值:{}'.format(idx,val))

输出

索引:0,值:hello
索引:1,值:world
索引:2,值:hello
索引:3,值:python

此外enumerate还可以指定遍历起始的索引,例如

# -*- coding: utf-8 -*-

if __name__ == '__main__':
    my_list = ['hello','world','hello','python']

    for idx,val in enumerate(my_list,4):
        print('索引:{},值:{}'.format(idx,val))

输出

索引:4,值:hello
索引:5,值:world
索引:6,值:hello
索引:7,值:python

此方法只是改变开始索引的值,并不改变遍历顺序。