[Tutor] Python Idioms?

Roel Schroeven roel at roelschroeven.net
Wed Apr 1 19:20:12 CEST 2015


Mark Lawrence schreef:
> On 01/04/2015 11:50, Alan Gauld wrote:
>> On 01/04/15 11:04, Wolfgang Maier wrote:
>>> On 04/01/2015 11:04 AM, Alan Gauld wrote:
>>>> On 01/04/15 05:50, Jim Mooney wrote:
>>>>
>>>>>>>> s = [1,2,3,4,5,6,7,8]
>>>>>>>> list(zip(*[iter(s)]*2))
>>>>>>>> [(1, 2), (3, 4), (5, 6), (7, 8)]
>>>> Personally I'd have used slicing in this example:
>>>>
>>>> zip(s[::2],s[1::2])
>>>>
>>> With an emphasis on *in this example*.
>>>
>>> The idiom you are citing works on any iterable, not all of which support
>>> slicing and the slicing version requires two passes over the data.
>> Agreed, but readability always trumps performance,
>> unless performance is critical.
>> In which case readability usually trumps performance.
>>
>> And especially on a beginners list.
>>
> 
> In which case I'll stick with the more-itertools pairwise() function 

Which does not the same thing. Original:

 >>>>>>>> s = [1,2,3,4,5,6,7,8]
 >>>>>>>> list(zip(*[iter(s)]*2))
 >>>>>>>> [(1, 2), (3, 4), (5, 6), (7, 8)]

Pairwise:

>  >>> take(4, pairwise(count()))
> [(0, 1), (1, 2), (2, 3), (3, 4)]


Greetings,
Roel

-- 
The saddest aspect of life right now is that science gathers knowledge
faster than society gathers wisdom.
   -- Isaac Asimov

Roel Schroeven



More information about the Tutor mailing list