2017-03-12 3 views
1

Ich habe 15 Elemente in einem Array, und ich möchte jeweils fünf Elemente einem Block zuordnen. Die Elemente sind:Ordnen Sie jedem Block fünf Elemente eines Arrays zu

elements=["a",'b','c','d','e','f','g','h','i','j','k','l','m','n','o'] 

I erste 5 Elemente gehören zu blockieren # 1, die zweiten fünf sind gehörte zu blockieren # 2 und so weiter sagen wollte. Ich muss es in einer Schleifenstruktur tun, wie später, muss ich die Informationen jedes Blocks für eine spezielle Aufgabe verwenden. Da ich neu bei Python bin, weiß ich nicht, wie ich es schreiben soll. Jeder Rat wird sehr geschätzt.

+0

Sie kennen die Elemente im Voraus? Warum gruppierst du sie nicht zusammen? –

+0

Ja, ich wusste diese Elemente im Voraus, ich habe es aus einer Excel-Datei gelesen. Ich kann sie nicht hart codieren, weil sie in Wirklichkeit 1500 Elemente sind und deshalb würde ich 300 Blöcke haben. Ich habe hier 15 geschrieben, denn wenn ich lerne, wie man es in eine Schleife für 15 Elemente schreibt, kann ich es auch für 1500 Punkte ausgeben. – Julliette

Antwort

2

Sie können einfach Liste Verständnis dafür verwenden:

result = [elements[i:i+5] for i in range(0,len(elements),5)] 

welche generieren:

>>> result 
[['a', 'b', 'c', 'd', 'e'], ['f', 'g', 'h', 'i', 'j'], ['k', 'l', 'm', 'n', 'o']] 

Oder mehr generic:

def blockify(elements,n=5): 
    return [elements[i:i+n] for i in range(0,len(elements),n)] 

und dann rufen sie mit blockify(elements,5).

Was wir tun, ist, dass wir ein range erstellen, die von 0 zur len(elements) (Länge der elements) reicht, und macht Hopfen von 5 (oder n im generischen Fall). Nun fügen wir für jeden dieser Schritte einen Schnitt elements[i:i+5] zum Ergebnis hinzu.

0

Schleife durch alle und Division Index von 5 (Stock Division Operator //) Das Ergebnis der Division ist die Nummer der Gruppe.

Verwandte Themen