@DMD: statt Elemente einer Liste zu ersetzen, solltest Du statt dessen eine neue Liste anlegen, weil so Änderungen sich nur auf die lokale Umgebung auswirken und damit Programme viel übersichtlicher und fehlerfreier werden. Eine Liste sollte nur gleichartige Objekte enthalten, was bei Deiner Liste offensichtlich nicht der Fall ist, sie besteht aus der String-Representation eines Datums und den Stringrepresentationen von 5 Fließkommazahlen. Das ist in mehrererlei Hinsicht nicht optimal. Zum Rechnen sind Stringrepresentationen von Zahlen nicht geeignet, die lineare Liste einer mehrdimensionalen Struktur läßt Dich seltsame Aufgaben lösen, wie z.B. jedes n-te Element zu ersetzen. Das ist nicht nur umständlich, sondern geht spätestens dann schief, wenn aus den 5 Elementen irgendwann einmal 6 werden.
Deine erste Aufgabe wäre also, die Liste in eine sinnvolle Datenablage zu konvertieren. Am besten geschieht das gleich beim Lesen der Daten. Die Rückumwandlung findet dann beim Schreiben in eine Datei statt.
Code: Alles auswählen
import datetime
from collections import namedtuple
class Stockdata(namedtuple('StockData', 'date, whiskey, beer, wine, water, milk')):
@classmethod
def from_strings(cls, date, whiskey, beer, wine, water, milk):
return cls(datetime.datetime.strptime(date, '%d.%m.%Y'),
float(whiskey), float(beer), float(wine), float(water), float(milk))
data = ['01.09.2015', '100', '500', '100', '9', '91', '08.09.2015', '15', '45', '14.5', '9', '5.5', '11.09.2015', '1', '1', '1000', '4', '996', '16.09.2015', '15', '45', '8.75', '9', '-0.25', '30.09.2015', '15', '45', '10', '9', '1']
stock = map(Stockdata.from_strings, *[iter(data)]*6)
new_stock = [item._replace(milk=item.milk + 5) for item in stock]