Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #5014
| From | Martineau <ggrp2.20.martineau@dfgh.net> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Custom string joining |
| Date | 2011-05-09 12:26 -0700 |
| Organization | http://groups.google.com |
| Message-ID | <c1f15442-524b-406e-a074-e1a309bc3ec0@s16g2000prf.googlegroups.com> (permalink) |
| References | <mailman.1289.1304771900.9059.python-list@python.org> |
On May 7, 5:31 am, Claudiu Popa <cp...@bitdefender.com> wrote:
> Hello Python-list,
>
> I have an object which defines some methods. I want to join a list or
> an iterable of those objects like this:
>
> new_string = "|".join(iterable_of_custom_objects)
>
> What is the __magic__ function that needs to be implemented for
> this case to work? I though that __str__ is sufficient but it doesn't seems to
> work. Thanks in advance.
>
> PC
Instead of join() here's a function that does something similar to
what the string join() method does. The first argument can be a list
of any type of objects and the second separator argument can likewise
be any type. The result is list of the various objects. (The example
usage just uses a list of string objects and separator to illustrate
what it does.)
def tween(seq, sep):
return reduce(lambda r,v: r+[sep,v], seq[1:], seq[:1])
lst = ['a','b','c','d','e']
print tween(lst, '|')
print ''.join(tween(lst, '|'))
Output:
['a', '|', 'b', '|', 'c', '|', 'd', '|', 'e']
a|b|c|d|e
It could be made a little more memory efficient by applying the
itertools module's islice() generator to the first 'seq' argument
passed to reduce():
def tween(seq, sep):
return reduce(lambda r,v: r+[sep,v], itertools.islice(seq,1,None),
seq[:1])
--
Martin
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Custom string joining Claudiu Popa <cpopa@bitdefender.com> - 2011-05-07 15:31 +0300
Re: Custom string joining Martineau <ggrp2.20.martineau@dfgh.net> - 2011-05-09 12:26 -0700
Re: Custom string joining Ian Kelly <ian.g.kelly@gmail.com> - 2011-05-09 14:07 -0600
csiph-web