2017-06-04 8 views
-1

Ich versuche, eine Liste von 24 Objekten aus Grasshopper3d, [Poly-Linien1] [Poly-Linien2] .... [Poly-Linien24] in 4 Teile zu teilen, so Jede 6 Listen von Polylinien können an verschiedene und separate Listen angehängt werden - jedes 6 Objekte stellt Gesichter für eine Box dar, so dass jede Box, die eine separate Liste [] ist, 6 Elemente enthält - ich habe versucht, die Itertools zu verwenden Bibliothek, um das zu tun, aber ich habe ein Problem mit der Funktion. Ich habe versucht, die Liste zu teilen.Aufteilen von Listen und Anhängen sie an separate Listen

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

können Sie Ihre Eingabe und Ihre gewünschte Ausgabe hinzufügen? –

Antwort

1

Ich versuche, eine Liste von 24 Objekten aufteilen [...] in 4 Teile [...], so dass jeder [...] ist eine separate Liste [] 6 Elemente hat

Ich antworte dass Frage. Ich habe keine Ahnung, wie du sonst noch etwas geschrieben hast. Wenn ich dich also falsch verstanden habe, werde ich meine Antwort löschen.

>>> 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 ist die Liste der 24 beliebige Objekte.

+0

Ich wette, dass das OP versucht zu sagen, dass sie eine Liste von Listen mit einer Länge von 24 hat. Und sie versucht, sie durch einen Bereich von 6 Elementen zu teilen und die Elemente in neue Listen zusammenzuführen. –

+0

@ChihebNexus hoffentlich gibt OP einen Kommentar ab. – timgeb

+0

Sie meinen die Kommentare innerhalb des Codes? Diese Kommentare und die Methode 'islice()' wurden aus der offiziellen Dokumentation in ihren Kommentaren kopiert. Werfen Sie einen Blick [hier] (https://docs.python.org/3/library/itertools.html#itertools.islice). –

Verwandte Themen