I\'ve already looked at this question on representing strings in Python but my question is slightly different.
Here\'s the code:
>>> class W
There are probably no amazing way.
def strjoin(glue, iterable):
return glue.join(str(s) for s in iterable)
"...it would be nice to avoid doing that every time..."
You want to avoid repeating that same code multiple times? Then use a function;:
def join_as_str(alist):
return "\n".join(str(item) for item in alist)
You technically aren't joining the list of python objects, just their string representation.
>>> reduce(lambda x,y: "%s\n%s" % (x,y), weird_list)
'1302226564.83\n1302226564.83\n1302226564.83'
>>>
This works as well but doesn't look any nicer:
>>> a = ""
>>> for x in weird_list:
... a+="%s\n" % x
...
>>> print a
1302226564.83
1302226564.83
1302226564.83
>>>
Would it work for you if you added an __add__
method? E.g.,
from operator import add
from random import randint
class WeirdThing(object):
def __init__(self,me=None):
self.me = me if me else chr(randint(97,122))
def __str__(self):
return "%s" % self.me
def __repr__(self):
return ";%s;" % self.me
def __add__(self,other):
new_me = add(str(self.me),str(other.me))
return WeirdThing(new_me)
weird_list = [WeirdThing(), WeirdThing(), WeirdThing()]
print weird_list
gives,
[;y;, ;v;, ;u;]
and this,
strange_thing = reduce(add,weird_list)
print strange_thing
gives,
yvu
You have to stringify your objects before you can join them. This is because str.join
expects a series of strings, and you must give it a series of strings.
For the sake of less typing at the cost of readability, you can do "\n".join(map(str, list_of_things)
.