Re: [問題] 初學者list問題 l[:,var]

看板Python作者 (←這人是超級笨蛋)時間5年前 (2019/09/12 14:43), 編輯推噓3(301)
留言4則, 4人參與, 5年前最新討論串2/2 (看更多)
※ 引述《st1009 (前端攻城師)》之銘言: : a[:,var] 這種list的用法該如何理解?這種語法是否有他的名字可以告訴我嘛>///< : 實在不知道該怎查這種用法... : 我知道[:]叫作slice,譬如a = [1,2,3] : 用a[1:]會得到[2,3] : 但多一個","就不懂了...

09/11 21:23,
了解了,謝謝大家,我一直把他當成python自己的語法糖,難
09/11 21:23

09/11 21:23,
怪查不到,謝謝<(_ _)>
09/11 21:23
其實這完全是合法的 Python 語法糖沒錯 那個逗號是 tuple 的逗號 >>> 1,2 (1, 2) 寫成這樣大概就比較容易懂:a[(:, var)] 冒號就如你所理解是 slice Python 允許省略冒號前後的參數 (會使用預設值 None) >>> a = [1, 2, 3] >>> a[None:None] == a[:] True 所以你的式子可以繼續進一步展開成 a[(slice(None, None, None), var)] 這樣子意義應該就很明顯了吧 ==== 會讓你困惑的原因大概是由於 Python 沒有任何內建型別可以處理這樣的參數 但是我們可以自行建構一個有這種功能的型別(也就是 Pytorch 做的事情) class A: def __getitem__(self, k): # XXX: Return a useful value. return k >>> a = A() >>> a[1] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 1 >>> a[:,'x'] (slice(None, None, None), 'x') >>> a[1:9,'y'] (slice(1, 9, None), 'y') -- "問おう、貴方が私のマスターか?" -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.171.207 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1568270620.A.947.html

09/12 15:26, 5年前 , 1F
推推
09/12 15:26, 1F

09/12 15:28, 5年前 , 2F
長知識
09/12 15:28, 2F

09/13 00:13, 5年前 , 3F
推推長知識
09/13 00:13, 3F

09/13 06:25, 5年前 , 4F
哈 完全沒想到是 slice 和 tuple
09/13 06:25, 4F
文章代碼(AID): #1TUUaSb7 (Python)
討論串 (同標題文章)
文章代碼(AID): #1TUUaSb7 (Python)