我有the Thoracic Surgery dataset從the UCI dataset repository。
從這個數據集的單行看起來是這樣的:將列表中的二維列表拆分爲新列表
DGN3,4.36,3.28,PRZ1,F,F,F,T,F,OC12,T,F,F,T,F,59,T
我有一個腳本讀取這些行成子列表清單:
每個子列表是文件中的行,包含數據的一些改造(主要是,只是把每個元素行成一定數值,這部分是不相關的問題)
因此,每個子列表如下所示:
[3.0, 4.36, 3.28, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 12.0, 1.0, 0.0, 0.0, 1.0, 0.0,59.0, 1.0]
現在,我想要做的就是把子列表名單成子列表的兩個列表,其中:
- 第一個列表的
i
個子列表包含一切,但的的i
個子列表的最後一個元素原始列表 i
第二個列表的第二個子列表只包含原始列表的第i
個子列表的最後一個元素。
例如,上面顯示的行(子表)將被分成兩個子列表如下:
[3.0, 4.36, 3.28, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 12.0, 1.0, 0.0, 0.0, 1.0, 0.0,59.0]
[1.0]
現在,我知道我可以如下做到這一點很容易:
features, classes = [], []
for subl in L:
features.append(subl[:-1])
classes.append([subl[-1]])
我想知道是否有更好的方法來做到這一點。有沒有可能是一個itertools食譜或somthing出了numpy,會更適合這個?
什麼版本的Python? 'a,* b,c = [1,2,3,4,5,6]'沒有某種新的語法,它會自動分配'b',而不是被'a'抓住並且'C'? – mhlester
@mhlester:很好的問題。不幸的是,我在2.7。我認爲你的意思是來自python3的'a,* b,c = [1,2,3,4,5]'? – inspectorG4dget
是的,當我介紹時我並不積極,但它當然不在2.7上。 drat :( – mhlester