Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在由类对象组成的列表中查找特定值的最大元素索引?_Python_List_Class_Max - Fatal编程技术网

Python 如何在由类对象组成的列表中查找特定值的最大元素索引?

Python 如何在由类对象组成的列表中查找特定值的最大元素索引?,python,list,class,max,Python,List,Class,Max,我想在每一行的嵌套列表中找到最大元素索引 我得到了这个错误: maxe=array[i]。索引(max(数组[i]中的e_对象的e_object.x) ValueError:5不在列表中 我怎样才能得到这个结果 [3,2] 使用列表理解将嵌套的列表转换为x值之一,然后使用np.argmax: import numpy as np np.argmax([[element.x for element in row] for row in array], axis=1) 输出: array([

我想在每一行的嵌套列表中找到最大元素索引

我得到了这个错误:

maxe=array[i]。索引(max(数组[i]中的e_对象的e_object.x)
ValueError:5不在列表中
我怎样才能得到这个结果

[3,2]

使用
列表
理解将嵌套的
列表
转换为
x
值之一,然后使用
np.argmax

import numpy as np

np.argmax([[element.x for element in row] for row in array], axis=1)
输出:

array([3, 2], dtype=int64)
问题在于线路

maxe = array[i].index(max(e_object.x for e_object in array[i]))
您正在询问
object.x
的索引,但该列表实际上包含
object
。更改
max
函数以查看对象
x
属性内部

maxe = array[i].index(max(array[i], key=lambda o: o.x))

发生此错误的原因是
max
有效地对整数列表
[0,2,-3,5]
进行操作,而
索引
e\u对象列表中搜索。有多种方法可以解决此问题

最简单的方法可能是让
max
返回索引:

max_array = [max(range(len(a)), key=lambda x: a[x].x) for a in array]
这与使用
numpy
argmax
非常相似,但没有大量的导入和中间内存分配。请注意,此版本不需要对每个列表进行两次遍历,因为您不需要对
max
的结果调用
index


一个更长期的解决方案是将适当的比较方法添加到
\uuuueq\uuuuu
\uugt\uuuu
/
\uu lt\uuuuu
对象中。

没有任何循环,很好。如何像[3,2]那样表示结果?只需对结果调用
.tolist()
。它说:“TypeError:”>“e_object”和“e_object”的实例之间不支持”,列表和数组在Python中的含义不同。你有的只是一张清单。
max_array = [max(range(len(a)), key=lambda x: a[x].x) for a in array]