2017-06-04 67 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)。 –

相关问题