Paul Appleby <pap@nowhere.invalid> writes: > In BASH, I can have a single format descriptor for a list: > […] > Is this not possible in Python?
Not as such; you'll need to treat items differently from sequences of items. > Using "join" rather than "format" still doesn't quite do the job: Right, ‘str.join’ is meant for making a new string by joining substrings. What you want is to take each item and *append* some text. You can do that by constructing a sequence dynamically:: >>> values = range(4, 8) >>> print("\n".join( ... "{:d}th".format(item) for item in values)) 4th 5th 6th 7th > Is there an elegant way to print-format an arbitrary length list? In general, if you can figure out an operation you'd like to perform on each item of a sequence, you may try a generator expression to express the transformed sequence. In the above example: * Express the transformation of the sequence: format each number with "{:d}th". This can be done with a generator expression, producing an iterable. * Figure out what to do to the transformed sequence: join them all together with "\n" between each item. This can be done by passing the transformed iterable as the argument to ‘str.join’. The built-in collection types – dict, list, set, generator, etc. – are very powerful in Python because of the built-in syntax for expressing and interrogating and consuming them. Learning to use them is an important tool in avoiding more complex and error-prone code. -- \ “[F]reedom of speech does not entail freedom to have your ideas | `\ accepted by governments and incorporated into law and policy.” | _o__) —Russell Blackford, 2010-03-06 | Ben Finney -- https://mail.python.org/mailman/listinfo/python-list