[Python-ideas] More user-friendly version for string.translate()
Chris Barker
chris.barker at noaa.gov
Mon Oct 31 19:33:29 EDT 2016
On Fri, Oct 28, 2016 at 7:28 AM, Terry Reedy <tjreedy at udel.edu> wrote:
> >>> s = 'kjskljkxcvnalsfjaweirKJZknzsnlkjsvnskjszsdscccjasfdjf'
> >>> s2 = ''.join(c for c in s if c in set('abc'))
>
pretty slick -- but any hope of it being as fast as a C implemented method?
for example, with a 1000 char string:
In [59]: % timeit string.translate(table)
100000 loops, best of 3: 3.62 µs per loop
In [60]: % timeit ''.join(c for c in string if c in set(letters))
1000 loops, best of 3: 1.14 ms per loop
so the translate() method is about 300 times faster in this case. (and it
used a defaultdict with a None factory, which is probably a bit slower than
a pure C implementation might be.
I've always figured that Python's rich string methods provided two things:
1) single method call to do common things
2) nice fast, pure C performance
so I think a "keep these" method would help with both of these goals.
-CHB
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20161031/5832bde3/attachment.html>
More information about the Python-ideas
mailing list