Finding the array index number for known content.

P

PhilC

Hi Folks,

If I have an array holding a pair of numbers, and that pairing is
unique, is there a way that I can find the array index number for that
pair?

Thanks,

PhilC
 
J

Josiah Carlson

PhilC said:
If I have an array holding a pair of numbers, and that pairing is
unique, is there a way that I can find the array index number for that
pair?

If by "array" you mean "Python list", then yes:
lst.index(pair)

If by "array" you mean "array from the array module", then "pair of
numbers" is just two adjacent numbers that are of your 'pair' value,
then you are going to have to do it by hand...

def find_pair(arry, val1, val2):
for i in xrange(len(arry)-1):
if arry == val1 and arry[i+1] == val2:
return i
raise IndexError, "pair (%s, %s) not found in array"%(val1, val2)


- Josiah
 
P

PhilC

That was quick :)

Thank you very much indeed.

Regards

Phil

PhilC said:
If I have an array holding a pair of numbers, and that pairing is
unique, is there a way that I can find the array index number for that
pair?

If by "array" you mean "Python list", then yes:
lst.index(pair)

If by "array" you mean "array from the array module", then "pair of
numbers" is just two adjacent numbers that are of your 'pair' value,
then you are going to have to do it by hand...

def find_pair(arry, val1, val2):
for i in xrange(len(arry)-1):
if arry == val1 and arry[i+1] == val2:
return i
raise IndexError, "pair (%s, %s) not found in array"%(val1, val2)


- Josiah
 
S

Skip Montanaro

Phil> If I have an array holding a pair of numbers, and that pairing is
Phil> unique, is there a way that I can find the array index number for
Phil> that pair?
From the "teach them to fish" department...

Python, being the introspective language that it is, helps you answer these
sorts of questions pretty easily. Your question was in general, "is there a
way to do X with a list?". The first step is to ask a list what it knows
about itself:

% python
Python 2.4b1 (#52, Oct 17 2004, 13:54:51)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__',
'__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__setslice__', '__str__', 'append', 'count', 'extend', 'index',
'insert', 'pop', 'remove', 'reverse', 'sort']

Hmmm... there's an "index" attribute. Let's see what that's all about:
Help on built-in function index:

index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of
value

Looks promising (as Josiah already suggested it would be).

It's often also helpful to ask for help about an object's type (or class).
List objects are instances of the list type, and there is useful help about
it:

Help on class list in module __builtin__:

class list(object)
| list() -> new list
| list(sequence) -> new list initialized from sequence's items
|
| Methods defined here:
|
| __add__(...)
| x.__add__(y) <==> x+y
|
| __contains__(...)
| x.__contains__(y) <==> y in x
|
| __delitem__(...)
| x.__delitem__(y) <==> del x[y]
...

The powers of the help builtin are available via the pydoc command as well,
e.g.:

% pydoc sys
Help on built-in module sys:

NAME
sys

FILE
(built-in)

MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html

DESCRIPTION
This module provides access to some objects used or maintained by
the interpreter and to functions that interact strongly with the
interpreter.
...

% pydoc list
Help on class list in module __builtin__:

class list(object)
| list() -> new list
| list(sequence) -> new list initialized from sequence's items
|
...

Pydoc even supports a web server interface. Try something like:

pydoc -p 8709

then visit

http://localhost:8709/

To find out about builtin types (and builtin objects in general), click the
__builtin__ link. If you want help on a module the help displayed will
likely have a link to the relevant section of the standard documentation as
well.

Now go fish my son. Don't come back until you have caught your limit of
rainbow trout...

Skip
 
P

PhilC

Hi Skip,

This is very much appreciated. I certainly understand the fishing
concept. I'm probably like many others here in that I have no formal
computer training. (I used to be a plumber :) I think I've downloaded
..... and more to the point read .... most of the major help files but
with this last one I was truly stuck.

Now going to go through your and Josiah's answers in greater depth.

Again my sincere thanks to you both.

Phil
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top