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"