newbie question

Karl 8213543GGXNVJXACA at kabelmail.de
Fri Apr 1 17:03:03 EDT 2011


Ah, all right. Thank you very much, eryksun!


On 2011-04-01 22:48:44 +0200, eryksun () said:

> Regarding the format of your post, please use plain text only.
> 
> On Friday, April 1, 2011 3:52:24 PM UTC-4, Karl wrote:
>> 
>> aList = [0, 1, 2, 3, 4]
>> bList = [2*i for i in aList]
>> sum = 0
>> for j in bList:
>> sum = sum + bList[j]
>> print j
>> 
>> 0
>> 2
>> 4
>> 
>> IndexError: list index out of range
>> 
>> Why is j in the second run 2 and not 1 in the for-loop?? I think
>> j is a control variable with 0, 1, 2, 3, ...
> 
> The for loop yields the elements of bList, not their index (it's like a 
> foreach statement in other languages). Here's the full printout:
> 
> In [1]: aList = [0, 1, 2, 3, 4]
> In [2]: bList = [2*i for i in aList]
> In [3]: for j in bList:
>    ...:     print j
> 
> 0
> 2
> 4
> 6
> 8
> 
> Since bList is 5 elements long, bList[6] is indeed "out of range". 
> Here's a more direct way to accomplish this task:
> 
> In [4]: b_sum = sum(bList)
> In [5]: b_sum
> Out[5]: 20
> 
> Note that I'm not overwriting the name of the built-in function 'sum'. 
> Try to avoid doing that. It's pretty simple to type the name in the 
> interpreter and see if it's already bound to something you might want 
> to keep around.
> 
> Here's one way to get the index in a loop:
> 
> In [6]: b_sum = 0
> In [7]: for j, b in enumerate(bList):
>    ...:     b_sum += b
>    ...:     print j
> 
> 0
> 1
> 2
> 3
> 4
> 
> In [9]: b_sum
> Out[9]: 20
> 
> The enumerate function returns an iterable that's a tuple of the index 
> and item. A for loop iterates over an iterable object such as a 
> sequence.





More information about the Python-list mailing list