verschachtelte Listen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
juju
User
Beiträge: 47
Registriert: Dienstag 25. Mai 2010, 16:02

Ich würde gerne aus einem array (hier: data) jeweils 1000 Werte in ein separates Element einer verschachtelten Liste schreiben...
also 0-999 in liste[0] 1000-1999 in liste[1] usw...

Code: Alles auswählen

for i in range(0,len(data),1000):
	for k in range(len(voi)):
		for y in range(i,i+1000):
			a = data[y]
			data_proc[k].append(a)
len(voi) ist die Anzahl an Listen die zu verfügung steht: in diesem Fall 20...

das Problem ist: Alle 20 Elemente werden mit dem kompletten Datensatz vollgeschrieben...
Trichter
User
Beiträge: 45
Registriert: Montag 20. April 2009, 10:21

Das Problem ist die zweite Schleife, die für jedes i über alle k iteriert. Damit schreibst du dieselben Ergebnisse in jedes Element von data_proc.
Du solltest diese Schleife komplett entfernen und dir stattdessen den Index k (=i/1000) anhand von i generieren.
Die Überprüfung ob k jetzt noch einen gültigen Index von data_proc darstellt musst du dann getrennt (mit einem if-Statement oder per try ... except IndexError) noch extra einbauen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie wärs so:

Code: Alles auswählen

In[62]: step = 10

In [63]: data = range(101)

In [64]: [data[d:d+step] for d in xrange(0, len(data), step)]
Out[64]:
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
 [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
 [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
 [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
 [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
 [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
 [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
 [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
 [90, 91, 92, 93, 94, 95, 96, 97, 98, 99],
 [100]]
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
juju
User
Beiträge: 47
Registriert: Dienstag 25. Mai 2010, 16:02

Code: Alles auswählen

for i in range(0,len(data),1000):
	a = data[i:i+1000]
	data_proc.append(a)
das sieht schöner aus und funktioniert sogar :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wenn Du meine List Comprehension an dein data_proc binden würdest, dann sähe es noch schöner aus und wäre genauso funktional ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten