想入门金融,对量化这块比较感兴趣。因此选了Python学习。权当记录自己的一些学习笔记。
enumerate函数
enumerate函数是用来遍历一个迭代容器的元素,同时通过一个计数器变量记录当前元素所对应的索引值的函数。写出来的语句确实很有Pythonic的感觉,而且确实比一般通过range(list())来的简洁。有人说range(list())这种方式是老程序员沿用C,Java来的习惯,而且我最开始学习Python时,也是使用的range(list())来去元素的。
简单的:
fruits = ['apple', 'banana', 'peach', 'rice'] print(enumerate(fruits)
返回一个地址
<enumerate object at 0x03169F30>
fruits = ['apple', 'banana', 'peach', 'rice'] print(list(enumerate(fruits))
返回一个列表,是索引值与对应元素形成的元组为元素的列表。
[(0, 'apple'), (1, 'banana'), (2, 'peach'), (3, 'rice')]
进行遍历的话,可以这样
fruits = ['apple', 'banana', 'peach', 'rice'] for i in enumerate(fruits): print(i)
返回遍历结果
(0, 'apple')
(1, 'banana')
(2, 'peach')
(3, 'rice')
如果想将索引值和对应的元素分别返回的话
fruits = ['apple', 'banana', 'peach', 'rice'] for index, value in enumerate(fruits): print(index, value)通过两个变量定义索引值和元素,分别输出。
0 apple
1 banana
2 peach
3 rice
注意,只要定义两个变量即可,不需要是index和value这两个名称,与字典中key和value的定义不一样。
fruits = ['apple', 'banana', 'peach', 'rice'] for aa, bb in enumerate(fruits): print(aa, bb)
返回也是上面的结果。同时注意,定义的变量对应的是索引值还是对应的元素,只与变量的位置有关;第一个变量对应索引值,第二个变量对应具体的元素。
fruits = ['apple', 'banana', 'peach', 'rice'] for value, index in enumerate(fruits, 2): print(index, value)
返回结果
apple 0
banana 1
peach 2
rice 3
修改起始的索引值,添加希望开始的数字
fruits = ['apple', 'banana', 'peach', 'rice'] for index, value in enumerate(fruits, 2): print(index, value)
返回结果:
2 apple
3 banana
4 peach
5 rice
总结:
1、enumerate函数是Python的内置函数,应该充分利用它通过循环迭代自动生成的索引变量。
2、索引值默认从0开始,但是可以修改为使用者愿意的任意整数开始。
3、可以帮助我们编写更加Pythonic和地道的循环结构,并且可以避免使用笨重且容易出错的手动生成索引。
4、为了充分利用enumerate的特性,应该好好研究Python的迭代器和数据结构解包功能。