# How can I convert each item in the list to string, for the purpose of joining them?

## Question:

I need to join a list of items. Many of the items in the list are integer values returned from a function; i.e.,

``````myList.append(munfunc())
``````

How should I convert the returned result to a string in order to join it with the list?

Do I need to do the following for every integer value:

``````myList.append(str(myfunc()))
``````

Is there a more Pythonic way to solve casting problems?

Calling `str(...)` is the Pythonic way to convert something to a string.

You might want to consider why you want a list of strings. You could instead keep it as a list of integers and only convert the integers to strings when you need to display them. For example, if you have a list of integers then you can convert them one by one in a for-loop and join them with `,`:

``````print(','.join(str(x) for x in list_of_ints))
``````

There’s nothing wrong with passing integers to str. One reason you might not do this is that myList is really supposed to be a list of integers e.g. it would be reasonable to sum the values in the list. In that case, do not pass your ints to str before appending them to myList. If you end up not converting to strings before appending, you can construct one big string by doing something like

``````', '.join(map(str, myList))
``````

Your problem is rather clear. Perhaps you’re looking for extend, to add all elements of another list to an existing list:

``````>>> x = [1,2]
>>> x.extend([3,4,5])
>>> x
[1, 2, 3, 4, 5]
``````

If you want to convert integers to strings, use str() or string interpolation, possibly combined with a list comprehension, i.e.

``````>>> x = ['1', '2']
>>> x.extend([str(i) for i in range(3, 6)])
>>> x
['1', '2', '3', '4', '5']
``````

All of this is considered pythonic (ok, a generator expression is even more pythonic but let’s stay simple and on topic)

Maybe you do not need numbers as strings, just do:

``````functaulu = [munfunc(arg) for arg in range(loppu)]
``````

Later if you need it as string you can do it with string or with format string:

`print "Vastaus5 = %s" % functaulu`

The map function in python can be used. It takes two arguments. The first argument is the function which has to be used for each element of the list. The second argument is the iterable.

``````a = [1, 2, 3]
map(str, a)
['1', '2', '3']
``````

After converting the list into a string you can use the simple join function to combine the list into a single string

``````a = map(str, a)
''.join(a)
'123'
``````
``````a=[1,2,3]
b=[str(x) for x in a]
print b
``````

above method is the easiest and most general way to convert list into string. another short method is-

``````a=[1,2,3]
b=map(str,a)
print b
``````

There are three ways of doing this.

let say you have a list of integers

``````my_list = [100,200,300]
``````
1. `"-".join(str(n) for n in my_list)`
2. `"-".join([str(n) for n in my_list])`
3. `"-".join(map(str, my_list))`

However as stated in the example of timeit on python website at https://docs.python.org/2/library/timeit.html using a map is faster. So I would recommend you using `"-".join(map(str, my_list))`

For example:

``````lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]]

lst_s_points = [" ".join(map(str, lst)) for lst in lst_points]
print lst_s_points
# ['313 262 470 482', '551 254 697 449']
``````

As to me, I want to add a `str` before each str list:

``````# here o means class, other four points means coordinate
print ['0 ' + " ".join(map(str, lst)) for lst in lst_points]
# ['0 313 262 470 482', '0 551 254 697 449']
``````

Or single list:

``````lst = [313, 262, 470, 482]
lst_str = [str(i) for i in lst]
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

lst_str = map(str, lst)
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482
``````

How come no-one seems to like `repr`?
python 3.7.2:

``````>>> int_list = [1, 2, 3, 4, 5]
>>> print(repr(int_list))
[1, 2, 3, 4, 5]
>>>
``````

Take care though, it’s an explicit representation. An example shows:

``````#Print repr(object) backwards
>>> print(repr(int_list)[::-1])
]5 ,4 ,3 ,2 ,1[
>>>
``````