First a remark: in addition to iteration by index, Python offers iteration by values.
Since it makes code much more natural and readable, using it is encouraged.
For instance, if things
is a list, and f
is a function,
then among the following two equivalent lines,
sage: [f(v) for v in things]
sage: [f(things[i]) for i in range(len(things))]
we can hopefully agree the first one is not only more concise but clearer.
This might do what you want.
ww = ['AB', 'AC', 'AD', 'BC', 'BD', 'CD']
cond1 = ['${}-{}$'.format(*w) for w in ww]
With two {}
placeholders in the string ${}-{}$', the
format` method expects two arguments.
This works:
sage: '${}-{}$'.format('A', 'B')
'$A-B$
But if we provide the two arguments in packed form,
e.g. as a list, tuple, or string, we need to unpack them.
This is done with *
which used as a prefix is the unpacking operator in Python.
sage: w = ['A', 'B']
sage: '${}-{}$'.format(w) # index error
sage: '${}-{}$'.format(*w) # good
'$A-B$
sage: w = 'AB'
sage: '${}-{}$'.format(w) # index error
sage: '${}-{}$'.format(*w) # good
'$A-B$