Seite 1 von 1

Umgehung einer temporären Liste

Verfasst: Donnerstag 22. November 2012, 11:28
von api
Hallo zusammen,

ich möchte feststellen, ob der jeweils letzte Wert einer Liste innerhalb der Liste "RC_CronLinesList" in der Liste "AllowedBlocksList" vertreten ist. Danach baue ich die "RC_CronLinesList" wieder zusammen, aber jeweils ohne den letzten Wert. Hier die beiden Listen:
RC_CronLinesList
[['00', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'rundate', 'MAINTENANCE'], ['13', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'arch_tev', 'MAINTENANCE'], ['14', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'clear_arch', 'MAINTENANCE'], ['15', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'Saver', 'MAINTENANCE']]

AllowedBlocksList
['MAINTENANCE', 'MONITORING','DAILY REPORTS', 'MONTHLY REPORTS' 'SPECIAL ATTENTION', 'JEV']
Dazu habe ich mal folgenden Code-Schnipsel verfasst:

Code: Alles auswählen

TmpList = []
for line in RC_CronLinesList:
	if line[-1] in AllowedBlocksList: TmpList.append(line[:-1])

RC_CronLinesList = TmpList
RC_CronLinesList
[['00', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'rundate'], ['13', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'arch_tev'], ['14', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'clear_arch'], ['15', '06', '*', '*', '1-5', '/app/tst/sbin/jev.pl', 'TEST01', 'Saver']]
Erstmal muss ich sagen: Es funktioniert so. Aber mich stört irgendwie, dass ich erst alles in eine TmpList packe, um es am Ende wieder in die ursprüngliche Liste "RC_CronLinesList" zu kopieren.
Geht das eleganter? Bzw. kann ich das umkopieren mit der TmpList vermeiden?
Anders ausgedrückt: Ist das so eigentlich Python-like oder macht man das anders?

CU,
API

Re: Umgehung einer temporären Liste

Verfasst: Donnerstag 22. November 2012, 11:33
von EyDu
Das macht man genau so, wie du es umgesetzt hast. Mit einer List Comprehension wird daraus sogar ein kurzer Einzeiler. Allerdings solltest du noch einmal einen Blick auf PEP 8 werfen, dein Code sieht wirklich schrecklich aus. Und nach über 160 Beiträgen solltest du mittlerweile auch gelernt haben, dass es hier im Forum Code-Tags für Python gibt.

Die neue Liste wird übrigens auch nicht in die alte kopiert, es wird lediglich eine Referenz neu gesetzt. Damit sind die Kosten der Zuweisungen quasi 0.

Re: Umgehung einer temporären Liste

Verfasst: Donnerstag 22. November 2012, 11:39
von api
@EyDU: Danke schonmal für die schnelle Antwort.

Was PEP-8 angeht - ist mir schon klar.. Aber ich habe mich leider an andere Programmierstandards zu halten... und das fürs Forum jedesmal umzubauen, ist etwas kontraproduktiv... :?
Ansonsten weiss ich auch nicht, warum ich ständig diesen python-Tag ignoriere... :)