入れ子リストの最大値のインデックスを探しようとしています。入れ子リストの最大値のインデックスを見つけるPython 3.x
私は3つのリスト[[1,2,3,4]、[5,6,7,8]、[9,10,11,12]]
と私は私の出力を希望を持っています私にアウトプットを読んでいました値のインデックス12
を与える:
最大の要素の位置は(2,3)です。
ありがとうございます!
入れ子リストの最大値のインデックスを探しようとしています。入れ子リストの最大値のインデックスを見つけるPython 3.x
私は3つのリスト[[1,2,3,4]、[5,6,7,8]、[9,10,11,12]]
と私は私の出力を希望を持っています私にアウトプットを読んでいました値のインデックス12
を与える:
最大の要素の位置は(2,3)です。
ありがとうございます!
ソリューションを(リストとその最初の要素が空になることはありませんと仮定した場合)のようになります。
def maxIndex(nestedList):
m = (0,0)
for i in range(len(nestedList)):
for j in range(len(nestedList[i])):
if nestedList[i][j] > nestedList[m[0]][m[1]]:
m = (i,j)
return m
numpyののARGMAXを使用して、インデックス解明:あなたがnumpyのを使用しない場合、あなたはこのように手動検索を行うことができます
>>> L = [[1,2,3,4], [5,6,7,8], [9,10,11,12]]
>>> a = np.array(L)
>>> np.unravel_index(np.argmax(a), a.shape)
(2, 3)
私はこれがうまくいくと信じていますが、私はそれをインストールしておらず、ウェブサイトは永久に読み込まれています。 – DPlagueis
:numpyののない
a = [[1,2,3,4], [5,6,7,8], [9,10,11,12]]
maxEntry = None
coords = (None, None)
for x, sublist in enumerate(a):
for y, entry in enumerate(sublist):
if maxEntry == None or entry > maxEntry:
maxEntry = entry
coords = (x,y)
print(coords)
mylist1 = [[1,2,3,4], [5,6,7,8], [9,10,11,12]]
mylist2 = [[1,1,1,1,9], [5,5,5,5,5]]
def myfunc(mylist):
xx = mylist.index(max(mylist, key = lambda x:max(x)))
yy = mylist[xx].index(max(mylist[xx]))
print(xx,yy)
myfunc(mylist1)
myfunc(mylist2)
戻り
(2, 3)
(0, 4)
さらに試行した結果、最大の数字が3番目のインデックスに渡された場合、インデックスを返さないことがわかりました。私は[[1,1,1,1,9]、[5,5,5,5,5]]を置いて、場所として(0,2)と戻った。 – DPlagueis
それをキャッチするためにありがとう。私は私の答えを編集しました。 – plasmon360
あなたがネストされたリストの任意の深さのために動作します解決を望むなら、あなたはこれを試すことができます。
def find_index_of_max(nested_lst):
_max, idx_path, cpath = None, None, []
def find_max(lst, depth = 0):
nonlocal idx_path, _max
if len(cpath) - 1 < depth:
cpath.append(0)
for i, val in enumerate(lst):
cpath[depth] = i
if _max is None or val > _max:
idx_path = tuple(cpath)
_max = val
elif isinstance(val, list):
find_max(val, depth + 1)
find_max(nested_lst)
return idx_path
#Output
>>> find_index_of_max([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
(2, 3)
>>> find_index_of_max([[1,2,[16, [17, 18], 3], 3,4], [5,6,7,8], [9,10,11,12]])
(0, 2, 1, 1)
Pythonはゼロインデックス – James
@Jamesあるので、インデックスはない '12' '11'のようになります。これは、12 OPのインデックスがない指標12 – Fallen
ああ、に興味があります。私はあなたが何を言っているのかを見ます。 "12のインデックス"は少し曖昧です – James