Re: [問題] list 一問

看板Python作者 (←這人是超級笨蛋)時間12年前 (2013/08/10 16:14), 編輯推噓6(608)
留言14則, 7人參與, 最新討論串2/2 (看更多)
※ 引述《aety0129 (Chen)》之銘言: : 我想要把list中的數據拿出來做分割是可以的嗎? : list = ['101/01', '102/02', '103/03', '104/04', '105/05', '106/06'] : 分割成這樣 : a = ['101', '102', '103' '104', '105', '106'] : b = ['01', '02', '03', '04', '05', '06'] : 找了一下都是不太相同的用法... 請求支援 如果你只是要割開... >>> l = ['101/01', '102/02', '103/03', '104/04', '105/05', '106/06'] >>> [i.split('/') for i in l] [['101', '01'], ['102', '02'], ['103', '03'], ['104', '04'], ['105', '05'], ['106', '06']] 如果你一定要分成兩個 lists... >>> a, b = zip(*[i.split('/') for i in l]) >>> a ('101', '102', '103', '104', '105', '106') >>> b ('01', '02', '03', '04', '05', '06') 官方文件就有提到 zip 搭配 * 可以達到 unzip 功能 這點還滿酷的... 不過我必須承認我也是 Google 之後才發現這件事情 http://stackoverflow.com/questions/19339/ 另外如同連結裡提到, 參數展開在陣列太大的時候會有問題 (因為參數必須在解析時被完整展開, 無法使用 iterator) 如果有大量資料處理需求的話, 可以考慮連結裡面的另一個解搭配 generator 使用 -- 「我最想要的同伴嘛,首先是要笑口常開,其次是我們能永遠不會發生誤會。 如果這些都能辦到的話,嗯,如果他是世界上第一流的橋手,也還不錯。」 -- 班尼多‧加羅素,前義大利藍隊成員 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146

08/11 02:35, , 1F
真是高深的回答耶~
08/11 02:35, 1F

08/11 02:37, , 2F
之前看過一些人這樣寫,我還不是很能掌握~~~
08/11 02:37, 2F

08/11 04:04, , 3F
我把這篇擴充了一下 http://goo.gl/Pqr7KM
08/11 04:04, 3F

08/11 06:26, , 4F
這技巧的確不是很直覺,不過文件有提到所以不會很難找
08/11 06:26, 4F

08/11 14:48, , 5F
想成 unzip 就好想多了~
08/11 14:48, 5F

08/11 15:20, , 6F
第二個方法真漂亮
08/11 15:20, 6F

08/11 15:21, , 7F
不對,Python用這麼神奇的語法真的沒問題嗎? XD
08/11 15:21, 7F

08/11 16:03, , 8F
把zip看成對數據作橫(垂直)切割會較易理解
08/11 16:03, 8F

08/12 17:56, , 9F
其實我對 matrix 這說法有點疑惑,稍微搜尋了一下,
08/12 17:56, 9F

08/12 17:57, , 10F
才發現 zip 實際上應該是 Convolution 這鬼東西
08/12 17:57, 10F

08/12 21:00, , 11F
想問雖然看過很多問題可用zip解,不過不會比generator慢嗎?
08/12 21:00, 11F

08/12 23:04, , 12F
py3 的 zip 就是 generator,不知 py2 情況
08/12 23:04, 12F

08/12 23:26, , 13F
Python 2 是 list, 要用 itertools.izip 才是 generator
08/12 23:26, 13F

08/12 23:50, , 14F
感謝兩位,原來如此~
08/12 23:50, 14F
文章代碼(AID): #1I1cR-JJ (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
完整討論串 (本文為第 2 之 2 篇):
問題
6
14
問題
文章代碼(AID): #1I1cR-JJ (Python)