Jinja2で2つのリスト変数を連結するにはどうすればよいですか?
例えば。
GRP1 = [1, 2, 3]
GRP2 = [4, 5, 6]
{# This works fine: #}
{% for M in GRP1 %}
Value is {{M}}
{% endfor %}
{# But this does not: #}
{% for M in GRP1 + GRP2 %}
Value is {{M}}
{% endfor %}
したがって、(Pythonの場合と同様に)+を使用して2つのリストを連結しようとしましたが、リストではなく、python xrange
オブジェクトであることがわかります。
jijna2 error: unsupported operand type(s) for +: 'xrange' and 'xrange'
同じforループでGRP1とGRP2の連結を反復する方法はありますか?
私の知る限り、ネイティブのJinja2テンプレートを使用してそれを行うことはできません。新しい結合イテラブルを作成し、それをテンプレートに渡すとよいでしょう。例:
from itertools import chain
x = xrange(3)
y = xrange(3, 7)
z = chain(x, y) # pass this to your template
for i in z:
print i
コメントに従って、イテラブルをリストに明示的に変換し、それらを連結することができます:
{% for M in GRP1|list + GRP2|list %}
{{ GRP1 + GRP2 }}
のような連結リストは、より少ないjinja2バージョンv.2.9.5で利用できます。
@Hsiaoは元々この回答をコメントとして与えました