python在專案中遇到的問題(1)enumerate
阿新 • • 發佈:2019-01-10
本來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