私は今週Pythonをいじくり回していて、何かに行き詰まりました。
このような2Dリストがある場合:
myList = [[1,2],[3,4],[5,6]]
そして私はこれをしました
>>>myList.index([3,4])
それは戻るだろう
1
ただし、次のように、リストの1つにあるもののインデックスが必要です。
>>>myList.index(3)
そしてそれは戻るだろう
1, 0
これを行うことができるものはありますか?
乾杯
私は今週Pythonをいじくり回していて、何かに行き詰まりました。
このような2Dリストがある場合:
myList = [[1,2],[3,4],[5,6]]
そして私はこれをしました
>>>myList.index([3,4])
それは戻るだろう
1
ただし、次のように、リストの1つにあるもののインデックスが必要です。
>>>myList.index(3)
そしてそれは戻るだろう
1, 0
これを行うことができるものはありますか?
乾杯
これを試して:
def index_2d(myList, v):
for i, x in enumerate(myList):
if v in x:
return (i, x.index(v))
使用法:
>>> index_2d(myList, 3)
(1, 0)
多くのルックアップを実行している場合は、マッピングを作成できます。
>>> myList = [[1,2],[3,4],[5,6]]
>>> d = dict( (j,(x, y)) for x, i in enumerate(myList) for y, j in enumerate(i) )
>>> d
{1: (0, 0), 2: (0, 1), 3: (1, 0), 4: (1, 1), 5: (2, 0), 6: (2, 1)}
>>> d[3]
(1, 0)
シンプルなgeneexprを使用:
def index2d(list2d, value):
return next((i, j) for i, lst in enumerate(list2d)
for j, x in enumerate(lst) if x == value)
print index2d([[1,2],[3,4],[5,6]], 3)
# -> (1, 0)
私がよく知らないnumpyでない限り、これを行うものは何もありません。これは、それを行うコードを作成する必要があることを意味します。[[1, 2], [2, 3], [3, 4]].index(3)つまり、「返されるものは何ですか?」というような質問を意味します。重要です。
def td(l,tgt):
rtr=[]
for sub in l:
if tgt in sub:
rtr.append( (l.index(sub),sub.index(tgt)) )
return rtr
myList = [[1,2],[3,4],[5,6]]
print td(myList,3)
これにより、サブリストの複数のインスタンスが返されます(存在する場合)。