python在项目中遇到的问题(1)enumerate

本来python基础系列已经结束了,但是在写项目中又遇到了许多问题,于是便在这里不断补充,题目是新的系列,相当于进阶吧。

enumerate

It allows us to loop over something and have an automatic counter.
enumerate多由于for语句中得到计数。

语法

enumerate(Iterable,start)
语句中的第一个元素Iterable代表我们要进行遍历的序列(列表,字典,元组,……)。
语句中的第二个元素start代表索引的起始值,默认是0。

例子

例一:最基本的功能是生成序号,或者说计数

my_list = ['apple', 'banana', 'grapes', 'pear']
counter_list = list(enumerate(my_list, 1))
print(counter_list)
# Output: [(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]

同时你也可以这么写:

my_list = ['apple', 'banana', 'grapes', 'pear']
for c, value in enumerate(my_list, 1):
    print(c, value)

# Output:
# 1 apple
# 2 banana
# 3 grapes
# 4 pear

例二:那么我在哪里遇到这个问题呢?
我想实现一个如下的画板功能:
这里写图片描述
在设置点击响应区的时候,需要分配响应区大小,如第一个铅笔,是左上顶点位于(10,10)大小是(64,64)的矩形区域作为响应区,第二个刷子是从(10,10+64)大小是(64,64)的矩形区域作为响应区。这里我不想自己计算就可以使用使用序号,就可以使用枚举类型。

        for (i, img) in enumerate(self.pens):
            rect = pygame.Rect(10, 10 + i * 64, 64, 64)
            self.pens_rect.append(rect)

这里解释一下self.pens中储存了pen的图片,self.pens_rect储存了响应区域的信息。
例三:统计文件行数
【这个方法来自网上未经验证】

count = 0
for index, line in enumerate(open(filepath,'r')): 
    count += 1

参考文献:
[1]版权声明:本文为博主 http://blog.csdn.net/churximi 原创文章,未经允许不得转载,谢谢。 https://blog.csdn.net/churximi/article/details/51648388
[2]http://book.pythontips.com/en/latest/enumerate.html

猜你喜欢

转载自blog.csdn.net/tinpo_123/article/details/80281524