get each pair from a string.
Emile van Sebille
emile at fenx.com
Mon Oct 22 04:03:30 EDT 2012
On 10/21/2012 12:06 PM, Ian Kelly wrote:
> On Sun, Oct 21, 2012 at 12:58 PM, Vincent Davis
> <vincent at vincentdavis.net> wrote:
>> x = 'apple'
>> for f in range(len(x)-1):
>> print(x[f:f+2])
>>
>> @Ian,
>> Thanks for that I was just looking in to that. I wonder which is faster I
>> have a large set of strings to process. I'll try some timings if I get a
>> chance later today.
>
> The solution you came up with is probably faster, but less general --
> it will only work on sliceable sequences like strings, not arbitrary
> iterables.
>
So the simple loop is the right answer for sliceable sequences like
strings, but not if your code needs to deal with arbitrary iterables
such as those that the standard library authors are expected to handle.
So, as OP's a self confessed newbie asking about slicing, why provide an
example requiring knowledge of tee, enumerate, next and izip?
def nwise(iterable, n=2):
iters = tee(iterable, n)
for i, it in enumerate(iters):
for _ in range(i):
next(it, None)
return izip(*iters)
It's good that the standard library provides these tools as a
convenience, but when all you need is a derringer, why reach for a howitzer?
Emile
More information about the Python-list
mailing list