2017-09-26 44 views
-3

我不知道從哪裏開始,我是新來的編碼,所以我盡我所能,但我卡住了。我在詢問從哪裏開始或者有些僞碼,不是爲你寫的。編寫一個將整數列表拆分爲子列表的函數?

假設你有一個變量n這是一個整數列表,你需要將它分成一個長度爲x的子列表。

其次假設klen(n)/len_of_sublist

將被放置在第一個子列表從數字在索引0, k, 2k, ...值。

來自索引號1, k + 1, 2k + 1, ...的數字值將被放置在第二個子列表中。

索引2, k + 2, 2k + 2, ...上的數字值將被放置在第三個子列表中。

+0

歡迎。你爲什麼不告訴我們你的知識,我們會看到我們如何提供幫助。例如,你如何初始化你的子列表?你有沒有嘗試過構建一個循環來解決這個問題? – fiveclubs

+0

我的問題是我只知道絕對的基礎知識,因爲這是我的第一個編碼類,但教授走得非常快,並沒有解釋所有被assisgned,所以我們不得不嘗試自學,這就是爲什麼即時通訊尋求幫助。他從未教過它。我試圖從其他同學那裏獲得幫助,但他們似乎正在努力工作 –

回答

0

創建從原始列表(l1)子表(l2)的列表中,i是子列表的長度:

>>> l1 = [1,2,3,4,5,6,7,8,9,10] 
>>> i=2 
>>> l2= [l1[n:n+i] for n in range(0, len(l1), i)] 
>>> l2 
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] 

隨着其他C]的i值:

>>> i=3 
>>> l2= [l1[n:n+i] for n in range(0, len(l1), i)] 
>>> l2 
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] 
0
>>> n=[1,2,3,4,5,6,7,8,9,10,11,12] 
>>> k=4 
>>> zip(*[n[i:i+l] for i in range(0,len(n),l)]) 
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)] 

這將給你在0,k,2k../1,k+1,2k+1../2,k+2,2k+2..其中k=len(n)/x。所以你得到k長度爲x的子列表。

注意:這將只在len(n)=k*x完美時才起作用。如果不是,結果如下...

>>> k=5 
>>> zip(*[n[i:i+k] for i in range(0,len(n),k)]) 
[(1, 6, 11), (2, 7, 12)] 
+0

@thenewb是否有幫助?你還有什麼問題嗎? – kaza

相關問題