看板 Python 關於我們 聯絡資訊
如果一定要用for loop的話,在確定只有省略最後一次的情況下,我個人會比較 喜歡這種直接在後做一次的方式。 a = [1, 2, 3, 4, 5] last_index = len(a) - 1 for i in range(last_index): print(a[i], end=",") print(a[last_index]) 之所以要用個last_index,只不過是不想要進行兩次len(a)取長度而已,可省略 這個變數直接把last_index都寫成len(a) - 1就好,行數上更精簡一點。 比較重要的是不要直接for i in a而是改用index,這樣我們就可以避開必須判 讀哪一個元素是最後一個的問題,雖然也可以這麼寫: for i in a: if i == a[len(a) - 1]: print(i) else: print(i, end=",") 第二種寫法也可以改用index來處理,這在如果元素內容比對其實相對比較昂貴 的情況下更為理想: for i in range(len(a)): if i == len(a) - 1: print(a[i]) else: print(a[i], end=",") 總之這些寫法都不用在迴圈中指明最後一個元素是5,陣列a的內容可以隨意改 變而不用動到迴圈的code。 第一種寫法的好處是甚至不需要多加一個判斷在迴圈中,缺點是這種方法只能處 理陣列首尾有不同處理方式的情況,在中間的話就不好這麼處理了。 第二種寫法的缺點是迴圈裡需要持續做判斷元素內容,如果這個判斷相對昂貴( 比如是大字串或複雜的class),這樣寫就很蠢了,應當改為第三種的index處理方式 。而第二/三種寫法同樣的優點就是如果想變動的某些事情不只發生在首尾,則很容 易藉由增加if條件的方式來補充特例項目。 第二種寫法並非一無是處,因為如果我們的例外要求並不只是看index而是看元 素內容(舉例來說,如果是奇數我們就不加逗號,想要輸出312,5734,156,3這樣的東 西),而且元素內容不一定跟index有關的情況下,那麼當然就需要第二種寫法。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.160.70 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1575551148.A.271.html ※ 編輯: ddavid (114.36.160.70 臺灣), 12/05/2019 21:13:11
s4028600: 只是因為我那篇在實驗各位解法的時候 發現我的列表和我 12/06 03:51
s4028600: 的問題不一樣所以才在下面補充列表 實際上已經解決 不過 12/06 03:51
s4028600: 有各種解法也很好 12/06 03:51
s4028600: 你這個很好理解 雖然奇數不加逗號我想不出用在哪裡 目前 12/06 04:00
那只是舉例XD 實際上就是如果會按照每個元素內容不同有執行差異的情況啦XD
s4028600: 只用在爬蟲就是了 12/06 04:00
※ 編輯: ddavid (111.250.169.33 臺灣), 12/06/2019 18:27:34