Python – list transformation; string formatting – Stack Overflow
Posted by jpluimers on 2020/01/08
Sometimes simple examples are the best: [WayBack] Python – list transformation – Stack Overflow.
Interactive example (note you can run and save at repl.it in either [WayBack] Repl.it – Python 3 or [WayBack] Repl.it – Python 2; you can run but not save it at [WayBack] Welcome to Python.org: interactive Python shell):
# Links the documentation are Python 2, though everything works in Python 3 as well. x = [1,2,3,4,5,11] print("x: ", repr(x)) y = ['01','02','03','04','05','11'] print("y: ", repr(y)) # List comprehension https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions # ... using `str.format()` (Python >= 2.6): https://docs.python.org/2/library/stdtypes.html#str.format and https://docs.python.org/2/library/string.html#formatstrings y = ["{0:0>2}".format(v) for v in x] print("y: ", repr(y)) # ... using the traditional `%` formatting operator (Python < 2.6): https://docs.python.org/2/library/stdtypes.html#string-formatting y = ["%02d" % v for v in x] print("y: ", repr(y)) # ... using the format()` function (Python >= 2.6): https://docs.python.org/2/library/functions.html#format and https://docs.python.org/2/library/string.html#formatstrings # this omits the "{0:...}" ceremony from the positional #0 parameter y = [format(v, "0>2") for v in x] print("y: ", repr(y)) # Note that for new style format strings, the positional argument (to specify argument #0) is optional (Python >= 2.7) https://docs.python.org/2/library/string.html#formatstrings y = ["{:0>2}".format(v) for v in x] print("y: ", repr(y)) # Using `lambda` # ... Python < 3 return a list y = map(lambda v: "%02d" %v, x) print("y: ", repr(y)) # ... Python >= 3 return a map object to iterate over https://stackoverflow.com/questions/1303347/getting-a-map-to-return-a-list-in-python-3-x/1303354#1303354 y = list(map(lambda v: "%02d" %v, x)) print("y: ", repr(y))
Output:
Python 3 Python 2 Python 3.6.1 (default, Dec 2015, 13:05:11) [GCC 4.8.2] on linux x: [1, 2, 3, 4, 5, 11] y: ['01', '02', '03', '04', '05', '11'] y: ['01', '02', '03', '04', '05', '11'] y: ['01', '02', '03', '04', '05', '11'] y: ['01', '02', '03', '04', '05', '11'] y: ['01', '02', '03', '04', '05', '11'] y: <map object at 0x7fe1218200b8> y: ['01', '02', '03', '04', '05', '11'] Python 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.8.2] on linux ('x: ', '[1, 2, 3, 4, 5, 11]') ('y: ', "['01', '02', '03', '04', '05', '11']") ('y: ', "['01', '02', '03', '04', '05', '11']") ('y: ', "['01', '02', '03', '04', '05', '11']") ('y: ', "['01', '02', '03', '04', '05', '11']") ('y: ', "['01', '02', '03', '04', '05', '11']") ('y: ', "['01', '02', '03', '04', '05', '11']") ('y: ', "['01', '02', '03', '04', '05', '11']")
–jeroen
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Links the documentation are Python 2, though everything works in Python 3 as well. | |
x = [1,2,3,4,5,11] | |
print("x: ", repr(x)) | |
y = ['01','02','03','04','05','11'] | |
print("y: ", repr(y)) | |
# List comprehension https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions | |
# … using `str.format()` (Python >= 2.6): https://docs.python.org/2/library/stdtypes.html#str.format and https://docs.python.org/2/library/string.html#formatstrings | |
y = ["{0:0>2}".format(v) for v in x] | |
print("y: ", repr(y)) | |
# … using the traditional `%` formatting operator (Python < 2.6): https://docs.python.org/2/library/stdtypes.html#string-formatting | |
y = ["%02d" % v for v in x] | |
print("y: ", repr(y)) | |
# … using the format()` function (Python >= 2.6): https://docs.python.org/2/library/functions.html#format and https://docs.python.org/2/library/string.html#formatstrings | |
# this omits the "{0:…}" ceremony from the positional #0 parameter | |
y = [format(v, "0>2") for v in x] | |
print("y: ", repr(y)) | |
# Note that for new style format strings, the positional argument (to specify argument #0) is optional (Python >= 2.7) https://docs.python.org/2/library/string.html#formatstrings | |
y = ["{:0>2}".format(v) for v in x] | |
print("y: ", repr(y)) | |
# Using `lambda` | |
# … Python < 3 return a list | |
y = map(lambda v: "%02d" %v, x) | |
print("y: ", repr(y)) | |
# … Python >= 3 return a map object to iterate over https://stackoverflow.com/questions/1303347/getting-a-map-to-return-a-list-in-python-3-x/1303354#1303354 | |
y = list(map(lambda v: "%02d" %v, x)) | |
print("y: ", repr(y)) |
Leave a Reply