拆分列表并将它们附加到单独的列表中

时间:2017-06-04 09:32:50

标签: c# python ironpython grasshopper

我正在尝试拆分来自grasshopper3d的24个对象的列表, [poly-lines1] [poly-lines2] .... [poly-lines24]分为4个部分,因此每个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 个答案:

答案 0 :(得分: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个任意对象的列表。