[問題] 關於Index

看板Python作者 (離歌笑)時間7年前 (2017/04/05 15:40), 7年前編輯推噓1(1016)
留言17則, 6人參與, 最新討論串1/2 (看更多)
各位大大好,小弟是剛從R轉來Python的新手 想請教各位一個問題: 假設我有一個list test = [1,2,3,4,5,6] 就我所知的使用方法都是只能用slice 從xx開始 : xx結束 : 間隔多少取值 這樣的方式。 若是我想要抽出其中位置0,3,4 在R可以直接使用test[0,3,4] 而python中我找了蠻久的,似乎沒有直接的使用方法? 或是類似這種 index = [0, 2, 5] test[ !index ] (意即我要位置 1, 3, 6) 感謝各位大大解答~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.117.101 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1491378010.A.ED8.html ※ 編輯: laputaca (211.72.117.101), 04/05/2017 15:40:46

04/05 16:06, , 1F
試試 numpy?
04/05 16:06, 1F

04/05 16:19, , 2F
標準解法: [test[i] for i in index] (顛倒 not in)
04/05 16:19, 2F

04/05 16:20, , 3F
炫技解法:operator.itemgetter 或 filter
04/05 16:20, 3F

04/05 16:33, , 4F
COOL!! 感謝大大~~~
04/05 16:33, 4F

04/05 18:57, , 5F
map(test.__getitem__, index)
04/05 18:57, 5F

04/05 19:15, , 6F
不能用not in吧XD
04/05 19:15, 6F

04/05 19:26, , 7F
map(test.__getitem__,
04/05 19:26, 7F

04/05 19:28, , 8F
set(range(len(test))) - set(index)
04/05 19:28, 8F

04/05 19:29, , 9F
) #反過來
04/05 19:29, 9F

04/05 21:05, , 10F
[i for idx, i in enumerate(test) if idx not in index]
04/05 21:05, 10F

04/07 10:54, , 11F
感謝各位熱心大大
04/07 10:54, 11F

04/07 11:03, , 12F
測試了一下 u大的標準解法沒問題 炫技我還不知道怎用XD
04/07 11:03, 12F

04/07 11:04, , 13F
m大的 出來的output會像這樣: <map at 0x1cf29080>
04/07 11:04, 13F

04/07 11:04, , 14F
不知道有沒有辦法顯示內容?
04/07 11:04, 14F

04/07 11:05, , 15F
Z大的方法not in & in都 ok
04/07 11:05, 15F

04/07 12:44, , 16F
因為你在 python3 下面執行會是回傳 map object
04/07 12:44, 16F

04/07 12:44, , 17F
list(map_object) 即可拿到你要的資料
04/07 12:44, 17F
文章代碼(AID): #1Ov9zQxO (Python)
討論串 (同標題文章)
文章代碼(AID): #1Ov9zQxO (Python)