Re: [問題] 加入項目問題

看板Perl作者 (此人已死,有事燒紙)時間14年前 (2011/06/14 23:13), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串4/4 (看更多)
 首先要感謝abliou板友幫了我一個大忙。Q______Q  取之於perl板就要還之於perl板,  這篇是我把我的問題還有abliou板友給的解答code整理一下,  希望以後可供有類似問題的板友參考。  我的問題是我有一份data,如下所示:  1,2 1,14 1,7 1,16 1,82 1,123 1,95.....  2,34 2,1 2,75 2,156 2,6 2,87.....  3,54 3,12 3,7 3,24 3,41 3,12.......  我想在中間插進兩個項目,一個項目是從1開始一直到該序列的最後一個「個數」,  另一個則是固定是1,結果是像這樣:  1,1,1,2 1,2,1,14 1,3,1,7 1,4,1,16 1,5,1,82 1,6,1,123 1,7,1,95  2,1,1,34 2,2,1,1 2,3,1,75 2,4,1,156 2,5,1,6 2,6,1,87  3,1,1,54 3,2,1,12 3,3,1,7 3,4,1,24 3,5,1,41 3,6,1,12  abliou板友提供的code如下: open (OUT, ">>output_file.txt"); open (FILE, "input_file.txt")||die "$!\n"; foreach $line(<FILE>) { for $element (split/\s+/,$line){ ($cid,$transcation)=split',',$element ; $tid = 0 unless $precid == $cid ; $precid = $cid ; $tid++ ; print "$cid,$tid,1,$transcation " ; } }  跑過之後的確可以得出我想要的結果,  感謝abliou板友 Q___________Q ==  原先我沒有把我要的結果表達好,所以abliou板友上篇code跑出來的結果會變成:  1,1,1,2 1,2,1,14 1,3,1,7 1,4,1,16 1,5,1,82 1,6,1,123 1,7,1,95  2,8,1,34 2,9,1,1 2,10,1,75 2,11,1,156 2,12,1,6 2,13,1,87  3,14,1,54 3,15,1,12 3,16,1,7 3,17,1,24 3,18,1,41 3,19,1,12 就是第一個位置數字變成2之後,第二個數字沒有從1開始算起。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.152.126 ※ 編輯: fuwafuwa 來自: 114.41.152.126 (06/14 23:15)

06/15 00:06, , 1F
重點是有比較快嗎?快多少??
06/15 00:06, 1F

06/15 09:26, , 2F
讀大檔案,foreach 改用 while 試試看
06/15 09:26, 2F

06/15 11:31, , 3F
快超多,本來要跑超過一個晚上(真的跑完時間未定),現在
06/15 11:31, 3F

06/15 11:31, , 4F
幾分鐘搞定
06/15 11:31, 4F
文章代碼(AID): #1DztgDVM (Perl)
文章代碼(AID): #1DztgDVM (Perl)