Umgehung einer temporären Liste

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
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

@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... :)
Antworten