Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

RE: something about split()???

102 views
Skip to first unread message

Andreas Tawn

unread,
Aug 14, 2012, 5:44:14 AM8/14/12
to mingqiang hu, pytho...@python.org
> I have a question about the split function? surpose a = "|",and when I use a.split("|") , I got the list
> ['"",""] ,but I want to get the empty list,what should I do ?

Something like...

>>> [x for x in "|".split("|") if x]
[]

Cheers,

Drea

Jean-Michel Pichavant

unread,
Aug 14, 2012, 1:09:50 PM8/14/12
to Ramchandra Apte, pytho...@python.org, mingqiang hu
Ramchandra Apte wrote:
> (Much) more Pythonic solution:
> >>> filter(None,"|".split("|"))
>
> On 14 August 2012 15:14, Andreas Tawn <andrea...@ubisoft.com
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
A pythonic answer would be bottom-posted :p

JM


PS : pylint raises a low warning about *filter* being non pythonic,
http://pylint-messages.wikidot.com/messages:w0141
"les go�ts et les couleurs ne se discutent pas"

Mark Lawrence

unread,
Aug 15, 2012, 3:45:37 AM8/15/12
to pytho...@python.org
On 14/08/2012 18:09, Jean-Michel Pichavant wrote:

> Ramchandra Apte wrote:
> A pythonic answer would be bottom-posted :p
>
> JM

He or she is still top posting. I'm given up asking.

--
Cheers.

Mark Lawrence.

Terry Reedy

unread,
Aug 22, 2012, 1:46:31 AM8/22/12
to pytho...@python.org
On 8/21/2012 11:43 PM, mingqiang hu wrote:
> why filter is bad when use lambda ?

Inefficient, not 'bad'. Because the equivalent comprehension or
generator expression does not require a function call.

--
Terry Jan Reedy

Mark Lawrence

unread,
Aug 22, 2012, 3:30:30 AM8/22/12
to pytho...@python.org
A case of premature optimisation? :)

--
Cheers.

Mark Lawrence.

Terry Reedy

unread,
Aug 22, 2012, 12:43:04 PM8/22/12
to pytho...@python.org
On 8/22/2012 3:30 AM, Mark Lawrence wrote:
> On 22/08/2012 06:46, Terry Reedy wrote:
>> On 8/21/2012 11:43 PM, mingqiang hu wrote:
>>> why filter is bad when use lambda ?
>>
>> Inefficient, not 'bad'. Because the equivalent comprehension or
>> generator expression does not require a function call.

for each item in the iterable.

> A case of premature optimisation? :)

No, as regards my post. I simply made a factual statement without
advocating a particular action.

filter(lambda x: <expr>, iterable)
(x for x in iterable if <expr>)

both create iterators that produce the items in iterable such that
bool(<expr>) is true. The following, with output rounded, shows
something of the effect of the extra function call.

>>> timeit.timeit("list(i for i in ranger if False)", "ranger=range(0)")
0.91
>>> timeit.timeit("list(i for i in ranger if False)", "ranger=range(20)")
1.28
>>> timeit.timeit("list(filter(lambda i: False, ranger))",
"ranger=range(0)")
0.83
>>> timeit.timeit("list(filter(lambda i: False, ranger))",
"ranger=range(20)")
2.60

Simply keeping true items is faster with filter -- at least on my
particular machine with 3.3.0b2.

>>> timeit.timeit("list(filter(None, ranger))", "ranger=range(20)")
1.03

Filter is also faster if the expression is a function call.

>>> timeit.timeit("list(filter(f, ranger))", "ranger=range(20);
f=lambda i: False")
2.5033614114454394
>>> timeit.timeit("list(i for i in ranger if f(i))", "ranger=range(20);
f=lambda i: False")
3.2394095327040304

---
Perhaps or even yes as regards the so-called rule 'always use
comprehension'. If one prefers filter as more readable, if one only
wants to keep true items, if the expression is a function call, if
evaluating the expression takes much more time than the extra function
call so the latter does not matter, if the number of items is few enough
that the extra time does not matter, then the rule is not needed or even
wrong.

So I think PyLint should be changed to stop its filter fud.

--
Terry Jan Reedy

Ramchandra Apte

unread,
Aug 24, 2012, 10:44:27 AM8/24/12
to pytho...@python.org
When filtering for true values, filter(None,xxx) can be used
Your examples with lambda i:False are unrealistic - you are comparing `if False` vs <lambda function>(xx) - function call vs boolean check

Ramchandra Apte

unread,
Aug 24, 2012, 10:44:27 AM8/24/12
to comp.lan...@googlegroups.com, pytho...@python.org
On Wednesday, 22 August 2012 22:13:04 UTC+5:30, Terry Reedy wrote:

Terry Reedy

unread,
Aug 24, 2012, 12:04:54 PM8/24/12
to pytho...@python.org
On 8/24/2012 10:44 AM, Ramchandra Apte wrote:
> On Wednesday, 22 August 2012 22:13:04 UTC+5:30, Terry Reedy wrote:

>> >>> timeit.timeit("list(i for i in ranger if False)", "ranger=range(0)")
>>
>> 0.91
>>
>> >>> timeit.timeit("list(i for i in ranger if False)", "ranger=range(20)")
>>
>> 1.28
>>
>> >>> timeit.timeit("list(filter(lambda i: False, ranger))",
>>
>> "ranger=range(0)")
>>
>> 0.83
>>
>> >>> timeit.timeit("list(filter(lambda i: False, ranger))",
>>
>> "ranger=range(20)")
>>
>> 2.60

Your mail agent in inserting blank lines in quotes -- google?
See if you can turn that off.

> Your examples with lambda i:False are unrealistic - you are comparing
> `if False` vs <lambda function>(xx) - function call vs boolean check

That is exactly the comparison I wanted to make. The iteration + boolean
check takes .37 for 20 items, the iteration + call 1.77.

--
Terry Jan Reedy

Message has been deleted

Walter Hurry

unread,
Aug 24, 2012, 3:03:51 PM8/24/12
to
On Fri, 24 Aug 2012 14:29:00 -0400, Dennis Lee Bieber wrote:

> It appears to be a change Google made in the last month or two... My
> hypothesis is that they are replacing hard EOL found in inbound NNTP
> with an HTML <p>, and then on outgoing replacing the <p> with a pair of
> NNTP line endings. In contrast, text composed on Google is coming in as
> long single lines (since quoting said text in a response produces on a
> ">" at the start of the paragraph.

Google Groups sucks. These are computer literate people here. Why don't
they just use a proper newsreader?
Message has been deleted

Terry Reedy

unread,
Aug 24, 2012, 6:03:27 PM8/24/12
to pytho...@python.org
On 8/24/2012 5:56 PM, Dennis Lee Bieber wrote:
> On Fri, 24 Aug 2012 19:03:51 +0000 (UTC), Walter Hurry
> <walte...@lavabit.com> declaimed the following in
> gmane.comp.python.general:
>
>>
>> Google Groups sucks. These are computer literate people here. Why don't
>> they just use a proper newsreader?
>
> Probably because their ISP doesn't offer a free server <G>

Python lists are available on the free gmane mail-to-news server.



--
Terry Jan Reedy

Emile van Sebille

unread,
Aug 24, 2012, 6:15:39 PM8/24/12
to pytho...@python.org
On 8/24/2012 3:03 PM Terry Reedy said...
> On 8/24/2012 5:56 PM, Dennis Lee Bieber wrote:
>> On Fri, 24 Aug 2012 19:03:51 +0000 (UTC), Walter Hurry
>> <walte...@lavabit.com> declaimed the following in
>> gmane.comp.python.general:
>>
>>>
>>> Google Groups sucks. These are computer literate people here. Why don't
>>> they just use a proper newsreader?
>>
>> Probably because their ISP doesn't offer a free server <G>
>
> Python lists are available on the free gmane mail-to-news server.

I'm getting high load related denials with the gmane connections a lot
recently so I'm open to alternatives.

Suggestions or recommendations?


Emile



Mark Lawrence

unread,
Aug 24, 2012, 6:28:53 PM8/24/12
to pytho...@python.org
On 24/08/2012 23:03, Terry Reedy wrote:
> On 8/24/2012 5:56 PM, Dennis Lee Bieber wrote:
>> On Fri, 24 Aug 2012 19:03:51 +0000 (UTC), Walter Hurry
>> <walte...@lavabit.com> declaimed the following in
>> gmane.comp.python.general:
>>
>>>
>>> Google Groups sucks. These are computer literate people here. Why don't
>>> they just use a proper newsreader?
>>
>> Probably because their ISP doesn't offer a free server <G>
>
> Python lists are available on the free gmane mail-to-news server.
>

I don't think the core-mentorship list is available on gmane. Have I
missed it, has nobody asked for it to go on there or what?


--
Cheers.

Mark Lawrence.

Ned Deily

unread,
Aug 24, 2012, 6:36:33 PM8/24/12
to pytho...@python.org
In article <k18uat$9ns$1...@ger.gmane.org>,
Emile van Sebille <em...@fenx.com> wrote:
> On 8/24/2012 3:03 PM Terry Reedy said...
> > Python lists are available on the free gmane mail-to-news server.
> I'm getting high load related denials with the gmane connections a lot
> recently so I'm open to alternatives.

The high load denials should be a thing of the past as the gmane NNTP
server was very recently upgraded to use SSDs instead of standard disks.

--
Ned Deily,
n...@acm.org

Ned Deily

unread,
Aug 24, 2012, 6:39:56 PM8/24/12
to pytho...@python.org
In article <k18v53$hgs$1...@ger.gmane.org>,
Mark Lawrence <bream...@yahoo.co.uk> wrote:
> I don't think the core-mentorship list is available on gmane. Have I
> missed it, has nobody asked for it to go on there or what?

core-mentorship is a closed list so it would not be appropriate for it
to be mirrored anywhere.

http://mail.python.org/mailman/listinfo/core-mentorship

--
Ned Deily,
n...@acm.org

Walter Hurry

unread,
Aug 24, 2012, 6:55:41 PM8/24/12
to
On Fri, 24 Aug 2012 17:56:47 -0400, Dennis Lee Bieber wrote:

> On Fri, 24 Aug 2012 19:03:51 +0000 (UTC), Walter Hurry
> <walte...@lavabit.com> declaimed the following in
> gmane.comp.python.general:
>
>
>> Google Groups sucks. These are computer literate people here. Why don't
>> they just use a proper newsreader?
>
> Probably because their ISP doesn't offer a free server <G>

There are plenty of free Usenet providers.

David Robinow

unread,
Aug 25, 2012, 8:57:51 AM8/25/12
to Walter Hurry, pytho...@python.org
I haven't used a newsreader in over a decade. I'm quite happy with a
mailing list. Am I missing something?

Tim Golden

unread,
Aug 25, 2012, 11:31:08 AM8/25/12
to pytho...@python.org
On 25/08/2012 13:57, David Robinow wrote:
> On Fri, Aug 24, 2012 at 3:03 PM, Walter Hurry <walte...@lavabit.com> wrote:
> I haven't used a newsreader in over a decade. I'm quite happy with a
> mailing list. Am I missing something?

Not really. I'm the same; it just means you can skip over the occasional
ggroups-newsreader discussion threads which pop up
about 3 times a year on average.

:)

TJG

0 new messages