學生的Python練習題中有一題要他在一個全是字串的list裡,找出長度最長與最短的兩個字串。他本想用迴圈將字串一個個調出來計算長度然後比大小,但這個方法太麻煩,應該還有其他更簡潔的寫法。
題目中的list為: (若你要複製本文中的程式碼,建議單引號與雙引號要用半型重新輸入)
strs = [“donkey”, “bird”, “elephant”, “dog”, “dolphin”, “camel”]
他重新思考,突然想到如果能將list按照字串長度重新排序,那麼list裡的第一個字串就是最長、最後一個字串就是最短,於是跑來問我程式要怎樣寫才能將list裡的字串按照長度進行排序。
大叔之前也遇過需要將list按照字串長度重新進行排序的情況,所以自然知道怎麼寫;不難,而且還有兩種寫法,都是一行程式碼就搞定了。
題外話,這題大叔不會用這種方法來解,因為最長或最短的字串若不只一個,那麼重新排序後取第一和最後一個的答案也不算對。大叔告訴學生將list按照字串長度排序的方法之後,也提醒他這種方法會遇到的問題,讓他再思考更適合的解法。
【第一種寫法】
strs = [“donkey”, “bird”, “elephant”, “dog”, “dolphin”, “camel”]
strs.sort(key = lambda i:len(i), reverse = True)
#↑ reverse=True是由長到短,False是由短到長print(strs)
【第二種寫法】
strs = [“donkey”, “bird”, “elephant”, “dog”, “dolphin”, “camel”]
strs1 = sorted(strs, key = lambda i:len(i), reverse = False)
#↑ reverse=True是由長到短,False是由短到長print(strs1)