On Thu 13 May 2010 10:36:58 AM EDT, a wrote: > this must be easy but its taken me a couple of hours already > > i have > > a=[2,3,3,4,5,6] > > i want to know the indices where a==3 (ie 1 and 2) > > then i want to reference these in a > > ie what i would do in IDL is > > b=where(a eq 3) > a1=a(b)
There's several solutions. Here's one: It is a recipe for madness to use a list of integers and then talk about the position of those integers, so I renamed your list to use strings. >>> a = ['two', 'three', 'three', 'four','five', 'six'] Now I'll use the enumerate function to iterate through each element and get its position:: >>> for position, element in enumerate(a): ... print position, element ... 0 two 1 three 2 three 3 four 4 five 5 six And now filter: >>> for position, element in enumerate(a): ... if element == 'three': ... print position, element 1 three 2 three And now do something different besides printing: >>> b = [] >>> for position, element in enumerate(a): ... if element == 'three': ... b.append(position) And now we can rewrite the whole thing from scratch to use a list comprehension: >>> [position for (position, element) in enumerate(a) if element == 'three'] [1, 2] HTH Matt -- http://mail.python.org/mailman/listinfo/python-list