[Tutor] redundant function ( or, I need advice about cleaning up my code )

Kent Johnson kent_johnson at skillsoft.com
Sun Oct 31 04:03:50 CET 2004


That's exactly what the builtin function zip() does - it makes a list 
containing matched elements from each of the lists passed as arguments:
 >>> l1 = [1,2,3,4]
 >>> l2 = ['a', 'b', 'c', 'd']
 >>> zip(l1, l2)
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
 >>> for number, letter in zip(l1, l2):
...   print number, letter
...
1 a
2 b
3 c
4 d


If you want to iterate a single list, but you need the index for some 
reason, you can use enumerate():
 >>> for i, item in enumerate(l2):
...   print i, item
...
0 a
1 b
2 c
3 d

enumerate() returns an iterator so if you want a list you have to ask for 
it explicitly:
 >>> list(enumerate(l2))
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]

Kent

At 02:47 AM 10/31/2004 +0000, Max Noel wrote:

>On Oct 31, 2004, at 02:23, Morgan Meader wrote:
>>I did it that way because I had more than one list I was looking at. Is 
>>there another way to have the index so I can get values that match up by 
>>index on multiple lists?
>
>         Mmh... I don't think there's a built-in way to do that, but you 
> can create a custom iterator that will do the job. (iterators are another 
> great thing in Python, Ruby and Java)



More information about the Tutor mailing list