-1

我正在尝试将来自 Grasshopper3d、[poly-lines1][poly-lines2]....[poly-lines24] 的 24 个对象的列表拆分为 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)
4

1 回答 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 个任意对象的列表。

于 2017-06-04T09:49:13.383 回答