在Python中找到列表中元素的索引的好方法是什么? 注意,列表可能没有排序。
是否有方法指定要使用的比较运算符?
在Python中找到列表中元素的索引的好方法是什么? 注意,列表可能没有排序。
是否有方法指定要使用的比较运算符?
当前回答
最好的方法可能是使用列表方法。index。
对于列表中的对象,你可以这样做:
def __eq__(self, other):
return self.Value == other.Value
您需要的任何特殊处理。
你也可以在enumerate(arr)中使用for/in语句
使用实例查找值为> 100的项的索引。
for index, item in enumerate(arr):
if item > 100:
return index, item
源
其他回答
有索引方法,i = array.index(value),但我不认为你可以指定一个自定义比较运算符。不过,编写自己的函数来实现这一点并不难:
def custom_index(array, compare_function):
for i, v in enumerate(array):
if compare_function(v):
return i
下面是另一种使用列表理解的方法(有些人可能会觉得有争议)。对于简单的测试,例如比较对象属性(我需要很多)是非常容易的:
el = [x for x in mylist if x.attr == "foo"][0]
当然,这假设列表中存在一个合适的元素(实际上是惟一性)。
最好的方法可能是使用列表方法。index。
对于列表中的对象,你可以这样做:
def __eq__(self, other):
return self.Value == other.Value
您需要的任何特殊处理。
你也可以在enumerate(arr)中使用for/in语句
使用实例查找值为> 100的项的索引。
for index, item in enumerate(arr):
if item > 100:
return index, item
源
如果你只是想知道一个元素是否包含在列表中:
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> 'example' in li
True
>>> 'damn' in li
False
假设你想在numpy数组中找到一个值, 我想这样做可能有用:
Numpy.where(arr=="value")[0]