Hallo,
ich möchte eine Datenreihe einlesen.
z.B.: 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7
und möchte diese in einem Tuple von Tupeln speichern, Howto ?
Tuple=((1,2,3,4),(5,6,7,8),(9,1,2,3),(4,5,6,7))
ich bekomme immer nur eine Liste oder ein Tuple hin.
r/Delle
Tuple Problem
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
wenn du
definierst, dann ist a automatisch ein Tuple.
Jetzt kannst du das entweder händisch Teilen
oder, was geschickter ist, direkt beim Einlesen. Dann kommt es aber drauf an, wie und von wo die einliest...
Gruß, noisefloor
wenn du
Code: Alles auswählen
>>> a=1,2,3,4,5,6,7,8,9
>>> a
(1, 2, 3, 4, 5, 6, 7, 8, 9)
Jetzt kannst du das entweder händisch Teilen
Code: Alles auswählen
>>> b=(a[0:3],a[3:6],a[6:9])
>>> b
((1, 2, 3), (4, 5, 6), (7, 8, 9))
Gruß, noisefloor
Mal auf die Schnelle was zusammengehackt:
Code: Alles auswählen
def take(a,n):
return tuple(a[:n])
def drop(a,n):
return tuple(a[n:])
def group(a,n):
if a:
return [take(a,n)] + group(drop(a,n),n)
else:
return []
l = [1,2,3,4,5,6,7,8,9,10,11]
print tuple(group(l,4))
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
oder ohne (böse ) Rekursion:
Gruß, noisefloor
oder ohne (böse ) Rekursion:
Code: Alles auswählen
>>> a=1,2,3,4,5,6,7,8,9
>>> b =[]
>>> for x in range(0,len(a),3):
b.append(a[x:x+3])
>>> b
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
Und nochmal als "list comprehension":
Code: Alles auswählen
In [34]: a = tuple(xrange(1,10))
In [35]: b = [a[x:x + 3] for x in xrange(0, len(a), 3)]
In [36]: b
Out[36]: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
Und natürlich noch die offensichtliche Lösung (mit einer leichten Schwäche bei leeren Listen):
Code: Alles auswählen
>>> ls = range(10)
>>> map(tuple, reduce(lambda x, y: x[:-1]+([x[-1]+[y]] if len(x[-1]) != 3 else [x[-1], [y]]), ls, [[]]))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9,)]
Das Leben ist wie ein Tennisball.
Mit NumPy:
Code: Alles auswählen
In [33]: arange(21).reshape(7,3)
Out[33]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20]])