【发布时间】:2011-01-11 06:17:19
【问题描述】:
我想遍历一个列表并打印以“,”分隔的元素,并且不带逗号。由于格式化和转义,我不能只是', '.join(headings)。但以下显然给我留下了一个逗号。
% for x in headings:
<a href='#${x|u}'>${x}</a>, \
% endfor
或者更一般地说:当迭代 Mako 模板中的某些内容时,有没有办法知道我是否到达了最后一个元素(或第一个元素,或 nt)?
【问题讨论】:
我想遍历一个列表并打印以“,”分隔的元素,并且不带逗号。由于格式化和转义,我不能只是', '.join(headings)。但以下显然给我留下了一个逗号。
% for x in headings:
<a href='#${x|u}'>${x}</a>, \
% endfor
或者更一般地说:当迭代 Mako 模板中的某些内容时,有没有办法知道我是否到达了最后一个元素(或第一个元素,或 nt)?
【问题讨论】:
我做这样的事情:
<%def name="format( item )"><a href="#${item|u}">${item|u}</a>
</%def>
${', '.join( format(item) for item in l)}
【讨论】:
|u 等)吗?
要跟踪循环中的第一段或最后一段,在 Mako 中就像在普通 Python 中一样,使用:
% for i, x in enumerate(headings):
所以i 在第一站为 0,len(headings) - 1 在最后一站。
【讨论】:
扩展@AlexMartelli 的回答,我喜欢将enumerate 与一个很好的技巧结合起来,以保持指令小:
% for i, x in enumerate(xs):
${','*bool(i)} ${x}
% endfor
【讨论】: