Skip to content Skip to sidebar Skip to footer

Python: Return 2 Ints For Index In 2d Lists Given Item

I've been tinkering in python this week and I got stuck on something. If I had a 2D list like this: myList = [[1,2],[3,4],[5,6]] and I did this >>>myList.index([3,4]) i

Solution 1:

Try this:

defindex_2d(myList, v):
    for i, x inenumerate(myList):
        if v in x:
            return (i, x.index(v))

Usage:

>>> index_2d(myList, 3)
(1, 0)

Solution 2:

If you are doing many lookups you could create a mapping.

>>>myList = [[1,2],[3,4],[5,6]]>>>d = dict( (j,(x, y)) for x, i inenumerate(myList) for y, j inenumerate(i) )>>>d
{1: (0, 0), 2: (0, 1), 3: (1, 0), 4: (1, 1), 5: (2, 0), 6: (2, 1)}
>>>d[3]
(1, 0)

Solution 3:

Using simple genexpr:

defindex2d(list2d, value):
    returnnext((i, j) for i, lst inenumerate(list2d) 
                for j, x inenumerate(lst) if x == value)

Example

print index2d([[1,2],[3,4],[5,6]], 3)
# -> (1, 0)

Solution 4:

There is nothing that does this already, unless it's in numpy, which I don't know much about. This means you'll have to write code that does it. And that means questions like "What does [[1, 2], [2, 3], [3, 4]].index(3) return?" are important.

Solution 5:

def td(l,tgt):
    rtr=[]
    forsubin l:
        if tgt insub:
            rtr.append(    (l.index(sub),sub.index(tgt))    )

    return rtr        


myList = [[1,2],[3,4],[5,6]]print td(myList,3)

This will return more than one instance of the sub list, if any.

Post a Comment for "Python: Return 2 Ints For Index In 2d Lists Given Item"