Python types can be converted in many ways. Often we employ built-in methods like str()
or int
or float
. Often no custom code is needed.
More complex conversions often involve strings. We can convert number to strings, and strings to numbers—this requires parsing a string
.
Tuple
, listThis program creates a tuple with 3 elements, and then converts that tuple into a list with the list()
method. This call returns a list.
vegetables = ("CARROT", "SQUASH", "ONION") # Convert to list. veg2 = list(vegetables) veg2.append("LETTUCE") # Print results. print(vegetables) print(veg2)('CARROT', 'SQUASH', 'ONION') ['CARROT', 'SQUASH', 'ONION', 'LETTUCE']
Tuple
, string
A tuple can be converted into a single string
. This is best done with the string
join method. Join()
is called on a delimiter string
.
Join()
a tuple, and the result is a string
containing the tuple's items.tup = ("RABBIT", "MOUSE", "BIRD", "GIRAFFE") # Join tuple with no space. s = "".join(tup) print(s) # Join tuple with slash. s = "/".join(tup) print(s)RABBITMOUSEBIRDGIRAFFE RABBIT/MOUSE/BIRD/GIRAFFE
List
, string
Lists can also be converted into strings with the join method. This code sample is the same as one that converts a tuple, but it uses a list.
join()
together the strings with no separator, and with a semicolon.Join
can handle any iterable
collection, not just tuples and lists. Try it with a set.vehicles = ["CAR", "TRUCK", "TRACTOR"] # Convert list to string with join. result = "".join(vehicles) # Convert with semicolons separating strings. result2 = ";".join(vehicles) print(result) print(result2)CARTRUCKTRACTOR CAR;TRUCK;TRACTOR
Dictionary
, listWith the list()
method, we can also convert a dictionary to a list. There is some complexity here. When we call items()
on a dictionary, we get a view.
items()
and then convert that to a list. So we actually convert the dictionary to a list.sorted()
method to reorder elements in a view.vegetables = {"carrot": 1, "squash": 2, "onion": 4} # Convert dictionary to list of tuples. items = list(vegetables.items()) for item in items: print(len(item), item)2 ('carrot', 1) 2 ('squash', 2) 2 ('onion', 4)
Int
built-inNumbers can be converted to different types. In many languages this is called explicit casting. In Python we use a method syntax, such as int()
, to do this.
int()
, it will return 1. It always removes the fractional part of the number.floating = 1.23456 # Convert to int and print. print(floating) print(int(floating))1.23456 1
Int
, string
A number is converted into a string
with str
. And a string
is converted into a number with int
. In this example, we do these two conversions.
len()
on the string
and add one to the number.string
"123" has three characters. And the number 123 is increased to 124 when we add one to it.# Convert number to string. number = 123 value = str(number) # Print the string and its character count. print(value) print(len(value)) # Convert string to number. number2 = int(value) # Print the number and add one. print(number2) print(number2 + 1)123 3 123 124
Class
, string
We can specify how a class
is converted to a string
with the __repr__ method. This method returns a string
. We can have it return values of fields in the class
.
str
methods (with no underscores) are used on instances of a class
. If the __repr__ method is defined, it will be used.class Test: def __init__(self): self.size = 1 self.name = "Python" def __repr__(self): # Return a string. return "Size = " + str(self.size) + ", Name = " + str(self.name) t = Test() # Str and repr will both call into __repr__. s = str(t) r = repr(t) # Display results. print(s) print(r)Size = 1, Name = Python Size = 1, Name = Python
String
, charsWe can get the chars from a string
with a list comprehension. This syntax uses an inner loop expression to loop over each char
in the string. This results in a list of chars.
value = "cat" # Get chars from string with list comprehension. list = [c for c in value] print(list)['c', 'a', 't']
string
Python 3 has the space-efficient bytes type. We can take a string
and convert it into bytes with a built-in. We provide the "ascii" encoding as a string
argument.
string
, we can use the decode method. We again must provide an encoding string
.# Convert from string to bytes. value = "carrot" data = bytes(value, "ascii") print(data) # Convert bytes into string with decode. original = data.decode("ascii") print(original)b'carrot' carrot
A number in one unit, like bytes, can be converted into another, like megabytes. Here we divide by 1024 twice. Further conversions (bytes, gigabytes) are possible.
interface
, displaying this number is awkward and hard to read.def bytes_to_megabytes(bytes): return (bytes / 1024) / 1024 def kilobytes_to_megabytes(kilobytes): return kilobytes / 1024 # Convert 100000 bytes to megabytes. megabytes1 = bytes_to_megabytes(100000) print(100000, "bytes =", megabytes1, "megabytes") # 1024 kilobytes to megabytes. megabytes2 = kilobytes_to_megabytes(1024) print(1024, "kilobytes =", megabytes2, "megabytes")100000 bytes = 0.095367431640625 megabytes 1024 kilobytes = 1.0 megabytes
With the dictionary built-in, we can convert from a list of tuples (with keys, values) to a dictionary. Dict()
is a useful built-in method.
Some conversions in Python are numeric—these can often be done with mathematical expressions. For compound types such as collections, we use built-in methods to convert, such as list()
.