Wie Zustand zu verfolgen, wenn in Python Mako Vorlagen Iterieren
Frage
Ich möchte über eine Liste Schleife und drucken die Elemente durch getrennt ‚‘, ohne Komma. Ich kann nicht nur wegen der Formatierung ', '.join(headings)
und zu entkommen. Aber die folgenden offensichtlich lässt mich mit einem Komma.
% for x in headings:
<a href='#${x|u}'>${x}</a>, \
% endfor
Oder allgemeiner: Wenn Iterieren über etwas in einer Mako-Vorlage, ist es eine Möglichkeit zu wissen, ob ich das letzte Element erreicht (oder ersten oder nt)
Lösung
ich Sachen wie diese:
<%def name="format( item )"><a href="#${item|u}">${item|u}</a>
</%def>
${', '.join( format(item) for item in l)}
Andere Tipps
Für eine Übersicht über die erste oder letzte Etappe durch die Schleife, in Mako wie in einfachen Python, verwenden Sie:
% for i, x in enumerate(headings):
so i
0 auf dem ersten Schenkel und len(headings) - 1
auf der letzten Etappe.
Die Ausweitung auf @ AlexMartelli Antwort, ich mag zu koppeln, die enumerate
Sache mit einem schönen Trick halten die Anweisung klein:
% for i, x in enumerate(xs):
${','*bool(i)} ${x}
% endfor