use of index (beginner's question)

Steven D'Aprano steve+comp.lang.python at pearwood.info
Wed Apr 27 22:17:32 EDT 2011


On Wed, 27 Apr 2011 17:42:30 -0700, Rusty Scalf wrote:

> Greetings,
> I am just now learning python and am trying to use the index function
> with variables.
> 
> list1 = ['pig', 'horse', 'moose']
> list2 =  ['62327', '49123', '79115']
> a = list2[list1.index('horse')]
> print a
>  >49123
> 
>     -works fine. But
> 
> list1 = ['pig', 'horse', 'moose']
> list2 =  ['62327', '49123', '79115']
> n = 2
> s2 = "list" + `n`
> a = s2[list1.index('horse')]
> print a
> 
>    -does not work


Define "does not work".

What do you expect to happen, and what happens instead? When I try it, 
index works perfectly. You can see that most clearly by extracting out 
the call to index without all the other noise surrounding it. 

>>> list1.index('horse')
1

Works fine.

Whatever your problem is, it has *nothing* to do with index. You could 
remove the call to index completely:

>>> a = s2[1]
>>> print a
i

and get the same result.

If you print s2, you will see your problem:

>>> print s2  # do you expect it to be ['62327', '49123', '79115'] ?
list2


s2 is a string that happens to be the same as the name of the variable 
list2. That's all.


> I'd like to use the index function in a loop updating the file names by
> adding a number to that name with each cycle. But can't get to first
> base.

Don't do it that way. Instead of:

filename1 = 'foo.txt'
filename2 = 'spam.doc'
filename3 = 'image.jpg'

Keep a list of file names:

filenames = ['foo.txt', 'spam.doc', 'image.jpg']

and work with that.



-- 
Steven



More information about the Python-list mailing list