1. 程式人生 > >Python每日一題:第1題

Python每日一題:第1題

現在Python之禪和他朋友們 知識星球已經有120+加入,目前為止發了GitHub賬號的都已經邀請了,如果還沒有收到邀請的請私信我(有可能邀錯了),現在已經有39位加入了我們的GitHub組織,27位提交了程式碼,當然還有一部分做完了但沒提交到Github上來。

Git是程式設計中的基本技能之一,網際網路公司幾乎都在使用Git進行協作程式設計,昨天還有位禪友在微信上專門告訴我說星期五面試的時候剛好被問到 Git,幸好在這幾天學了一下。Git並不難,但會Git至少可以說明一個人的學習能力或者說對技術的嗅覺能跟上主流,如果面試問你GitHub是什麼都不知道,面試官就會對你打一個大的問號。

簡單點評我們的第一道題。

在使用 for 迴圈迭代一個列表時,有時我們需要獲取列表中每個元素所在的下標位置是多少,例如 numbers = [10, 29, 30, 41],要求輸出 (0, 10),(1, 29),(2, 30),(3, 41)

這道題的實現方式主要有兩種方式,第一種方式是通過獲取列表長度來迭代列表下標

for i in range(len(numbers)):
    print('({0}, {1})'.format(i, numbers[i]))

第二種方法是直接使用enumerate函式:

numbers = [10, 29, 30, 41]

for index, value
in enumerate(numbers): print(index, value)

後者才是更地道的寫法,在Python之禪中有一條格言是:There should be on,and preferably only one,obvious way to do it. 就是說我們寫程式碼的時候應該選擇一種而且最好是唯一一種顯而易見的方式來實現。

內建函式 enumerate 還可以接收一個預設引數 start ,用於指定 index 從哪個數開始,預設是0,不知道有多少禪友知道這個用法,如果你不知道,那麼建議你遇到新知識就更加詳細地瞭解一下官方文件,而不僅僅只是淺嘗輒止 ,學會查文件也是一個很重要的學習方法。文件:https://docs.python.org/3.6/library/functions.html#enumerate

大家提交的程式碼大部分都回答對了,但也有些問題程式碼,比如命名很隨意:

numbers = [10, 29, 30, 41]
for i, j in enumerate(numbers):
    print(i, j)

用 i 和 j 這種沒有任何意義的名字顯得很業餘,有人說這只是練習,但如果練習都是這樣的態度,很難說工作時你能取一個合理的名字。

還有禪友用list工廠函式返回一個新的列表,這種寫法有點畫蛇添足,而且在迭代超大的列表時會佔用更多的記憶體,因為你又建立了一個新的列表。

numbers = [10,29,30,41]
for i in list(enumerate(numbers)):
    print(i,end=' ')

勝者屬於堅持到最後的人


關注公眾號「Python之禪」(id:vttalk)獲取最新文章 python之禪