情况是列表中的最大值不止一个,要返回第一个最大值之外的其余最大值的下标。
因为index只能返回第一个最大值的下标,所以不知道怎么办,
比如:
[2 5 4 5 2 5]
需要返回的就是[5 3 5](不能重复输入,所以用空格隔开)
这样的,第一个元素为最大值,其余为下标。
也可以给个思路
利用enumerate函数
看这个:https://blog.csdn.net/qq_15821487/article/details/124456940
有帮助的话采纳一下哦!
当然,用小算法也特别简单,新建一个空列表,然后利用最大值函数求出列表中的最大值,把这第一个最大值先加到列表中,然后for i in range(len(lis))这个列表,判断lis[i]是否等于最大值,同时设置一个最大值的计数count,如果是第一个找出最大值,即count==1,这个计数为1的话,就不添加进列表,后面循环的全部添加进列表。
>>> a = [2,5,4,5,2,5]
>>> max_a = max(a)
>>> c = a.count(max_a)
>>> ans = []
>>> for i in range(c):
ans.append(a.index(max_a))
a[a.index(max_a)] = None
>>> ans[0] = max_a
>>> ans
[5, 3, 5]
>>> a
[2, None, 4, None, 2, None]
这样不用循环整个列表,但会改变列表中的值,
想不改变列表的值可以
1、将列表进行深拷贝
>>> import copy
>>> a = [2,5,4,5,2,5]
>>> b = copy.deepcopy(a)
>>> max_a = max(a)
>>> c = a.count(max_a)
>>> ans = []
>>> for i in range(c):
ans.append(a.index(max_a))
a[a.index(max_a)] = None
>>> ans[0] = max_a
>>> ans
[5, 3, 5]
>>> a
[2, None, 4, None, 2, None]
>>> b
[2, 5, 4, 5, 2, 5]
2、将列表整个循环一遍,当数值等于最大值就记录下标