From: knifenomad on
i know it's not very hard to get that solution.
just by implementing simple function like below.

def partition(target, predicate):
"""
split a list into two partitions with a predicate
provided.
any better ideas? :)
"""
true = []
false= []
for item in target:
if predicates(item):
true.append(item)
else:
false.append(item)
return true, false

but i wonder if there's another way to do this with standard libraries
or .. built-ins.
if it's not, i'd like the list objects to have partition method like
string module has.

true, false = [1,2,3,4].partition(lambda x: x >1)

print true, false
[2,3,4] [1]

From: Chris Rebert on
On Mon, Apr 19, 2010 at 6:00 PM, knifenomad <knifenomad(a)gmail.com> wrote:
> i know it's not very hard to get that solution.
> just by implementing simple function like below.
>
>      def partition(target, predicate):
>            """
>            split a list into two partitions with a predicate
> provided.
>            any better ideas? :)
>            """
>            true = []
>            false= []
>            for item in target:
>                if predicates(item):
>                    true..append(item)
>                else:
>                    false.append(item)
>            return true, false
>
> but i wonder if there's another way to do this with standard libraries
> or .. built-ins.
> if it's not, i'd like the list objects to have partition method like
> string module has.

(A) str.partition() has a /completely/ different meaning from your partition()
(B) You'd probably have better luck getting it added to the itertools
module since the concept is applicable to all iterables.
[http://docs.python.org/library/itertools.html]

Cheers,
Chris
--
http://blog.rebertia.com
From: segunai on
On 4월20일, 오전10시16분, Chris Rebert <c...(a)rebertia.com> wrote:
> On Mon, Apr 19, 2010 at 6:00 PM, knifenomad <knifeno...(a)gmail.com> wrote:
> > i know it's not very hard to get that solution.
> > just by implementing simple function like below.
>
> >      def partition(target, predicate):
> >            """
> >            split a list into two partitions with a predicate
> > provided.
> >            any better ideas? :)
> >            """
> >            true = []
> >            false= []
> >            for item in target:
> >                if predicates(item):
> >                    true.append(item)
> >                else:
> >                    false.append(item)
> >            return true, false
>
> > but i wonder if there's another way to do this with standard libraries
> > or .. built-ins.
> > if it's not, i'd like the list objects to have partition method like
> > string module has.
>
> (A) str.partition() has a /completely/ different meaning from your partition()
> (B) You'd probably have better luck getting it added to the itertools
> module since the concept is applicable to all iterables.
> [http://docs.python.org/library/itertools.html]
>
> Cheers,
> Chris
> --http://blog.rebertia.com

yep, my mistake. i shouldn't have compared it to string's partition().
i just wanted that convenience string.partition() has as a built-in.
anyway, thanks for itertools. :)