[問題] 新手請問list comprehension的問題

看板Python作者 (Leon)時間16年前 (2009/01/18 19:26), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/2 (看更多)
各位前輩大家好 小弟剛開始接觸Python 目前是看Python學習手冊自學中 在這裡請教各位幾個問題 在第四章提到串列這邊的例子 1. >>> M = [[1, 2, 3] 2. [4, 5, 6] 3. [7, 8, 9]] 4. >>> diag = [M[i][i] for i in [0, 1, 2]] # 從矩陣中收集對角線項目 5. >>> diag 6. [1, 5, 9] 7. >>> doubles = [c * 2 for c in 'spam'] # 重複字串中的字元 8. >>> doubles 9. ['ss', 'pp', 'aa', 'mm'] 那個第四行和第七行真的看不懂 特別是i跟c是什麼? 可不可以請板上的前輩幫小弟解釋一下 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.204.150.148

01/18 19:30, , 1F
只是一個名字(placeholder),拿來放後面依序給定的東西
01/18 19:30, 1F

01/18 19:31, , 2F
例如 for c in 'spam' 就是 c 會依序成為 s, p, a, m
01/18 19:31, 2F

01/18 19:32, , 3F
於是生出來的東西就是 ['ss', 'pp', 'aa', 'mm'], 因為 *2
01/18 19:32, 3F

01/18 21:17, , 4F
第四行是指抓出M裡面的[0][0], [1][1], [2][2]位置的
01/18 21:17, 4F

01/18 21:17, , 5F
資料
01/18 21:17, 5F

01/19 04:06, , 6F
從for c in 'spam' 開始看,有一點用到LISP語言的精神
01/19 04:06, 6F

01/19 12:55, , 7F
如果還沒讀到 for statement,建議等唸過 for 回頭來看
01/19 12:55, 7F

01/19 12:55, , 8F
list comprehension
01/19 12:55, 8F

01/19 12:56, , 9F
懂 for statement 應該不會不懂 list comprehension
01/19 12:56, 9F

01/20 22:02, , 10F
我了解了!感謝大家!!
01/20 22:02, 10F
文章代碼(AID): #19Sn810A (Python)
文章代碼(AID): #19Sn810A (Python)