我有一个列表,其中包含多次出现的最小元素
a = [1,2,1,1,4,5,6]
Run Code Online (Sandbox Code Playgroud)
我希望python返回元素1和列表中存在1的所有索引.我试过用
min_index, min_value = min(enumerate(a), key=operator.itemgetter(1))
Run Code Online (Sandbox Code Playgroud)
它只给出首先出现1的索引.
任何帮助表示赞赏.
Ble*_*der 14
我只是这样做:
minimum = min(a)
indices = [i for i, v in enumerate(a) if v == minimum]
Run Code Online (Sandbox Code Playgroud)
Rya*_*ing 11
确定最小元素,然后根据列表中的其他元素进行检查.
def locate_min(a):
smallest = min(a)
return smallest, [index for index, element in enumerate(a)
if smallest == element]
Run Code Online (Sandbox Code Playgroud)
这将返回一个元组(min_element,[location,location,...]).如果我理解正确,这就是我想你想要的.对于你的例子:
>>> locate_min([1, 2, 1, 1, 4, 5, 6])
(1, [0, 2, 3])
Run Code Online (Sandbox Code Playgroud)
此示例使用列表推导.如果您不熟悉它,它大致相当于以下for循环版本.(使用第一个版本,这只是为了帮助您理解它是如何工作的)
def locate_min(a):
min_indicies = []
smallest = min(a)
for index, element in enumerate(a):
if smallest == element: # check if this element is the minimum_value
min_indicies.append(index) # add the index to the list if it is
return smallest, min_indicies
Run Code Online (Sandbox Code Playgroud)