1. 程式人生 > >python在專案中遇到的問題(1)enumerate

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