2017-06-04 63 views
-1

我想將來自grasshopper3d, [poly-lines1] [poly-lines2] .... [poly-lines24]的24個對象的列表拆分爲4部分,so每6個多行的列表可以附加到不同的單獨列表中,每個6個對象表示一個框的面,所以每個單獨的列表[]中有6個元素 - 我一直試圖使用itertools庫來做到這一點,但我有一種功能問題。 我試圖分裂列表以及。拆分列表並將它們追加到單獨的列表中

def split(polyLines,list_i,n): 
    list_i.append(polyLines[0:len(polyLines):n]) 
    print list_i 
    return list_i 


lists_of_rocks = int(len(polyLines)/6) 

for i in range(0,lists_of_rocks): 
    list_i = [] 
    print list_i 

    #split(polyLines,list_i,n) 
    islice(polyLines,6) 

def islice(polyLines,6): 
    # islice('ABCDEFG', 2) --> A B 
    # islice('ABCDEFG', 2, 4) --> C D 
    # islice('ABCDEFG', 2, None) --> C D E F G 
    # islice('ABCDEFG', 0, None, 2) --> A C E G 
    s = slice(6) 
    it = iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1)) 
    nexti = next(it) 
    for i, element in enumerate(polyLines): 
     if i == nexti: 
      yield element 
      nexti = next(it) 
+1

你可以添加你的輸入和你想要的輸出嗎? –

回答

1

我試圖24級的對象[...]的列表分割成4份[...]因此,每個[...]是一個單獨的列表[]具有6個元件

我在接聽的問題。我不知道你寫的任何內容對於這個問題是否重要,所以如果我誤解了你,我會刪除我的答案。

>>> l = range(24) 
>>> result = [l[i:i+6] for i in range(0, len(l), 6)] 
>>> for x in result: x 
... 
[0, 1, 2, 3, 4, 5] 
[6, 7, 8, 9, 10, 11] 
[12, 13, 14, 15, 16, 17] 
[18, 19, 20, 21, 22, 23] 

l是您的24個任意對象的列表。

+0

我敢打賭,OP在試圖說她有一個長度等於24的列表清單。她試圖通過6個元素的範圍來分割它們,並將這些元素合併到新列表中。 –

+0

@ChihebNexus希望OP發表評論。 – timgeb

+0

您的意思是代碼中的註釋?這些註釋和'islice()'方法是在官方文檔的註釋中複製/粘貼的。吸取[這裏](https://docs.python.org/3/library/itertools.html#itertools.islice)。 –

相關問題