大家看看这一题 可以讲解思路最后好

编写程序,输入一个列表 a ,计算得到一个元组 t 。元组 t 的第一个元素为列表 a 的最大值,其余元素为该最大值在列表 a 中的下标(考虑最大值不唯一的情况)。

img

代码跟解释

_input = input("请输入列表,用空格隔开 例如:1 3 5 7\n")
a = _input.replace("\n", "").split(' ')  # 将输入转换为 list  [‘1‘, ‘3’,‘ 5‘,’ 7‘’]
a = [int(x) for x in a] # 将列表内的字符串转换为int [1, 3, 5, 7]
_max = max(a)  # 获取list中的最大值
_index = a.index(_max)  # 查找 list中这个值所在的下标
t = (_max, _index)  # 赋值给t
print("输入的列表a为:", a)
print("元素t为:", t)

输出为:


请输入列表,用空格隔开 例如:1 3 5 7
1 3 5 7
输入的列表a为: ['1', '3', '5', '7']
元素t为: ('7', 3)

如有问题及时沟通

#编写程序,输入一个列表a,计算得到一个元组t。元组t的第一个元素为列表a的最大值,其余元素为该最大值在列表a中的下标(考虑最大值不唯一的情况

````
lst = eval(input())
index = []
maxx = max(lst)
index.append(lst.index(maxx))

if lst.count(maxx)>1:
for i in range(len(lst)):
#print(i)
if lst[i]==maxx and i not in index:
index.append(i)
#print(index)

res = (maxx, *index)
print(res)

```
看看代码吧,看着看着就会了。在网上都找一找 这个有原题的。思路讲解也是有的,先自己解决一下,实在解决不了再问,这样有利于提升自己的能力

a = eval(input())
t = (max(a), *(i for i,j in enumerate(a) if j == max(a)))

input()从键盘输入的是字符串格式,eval()函数可以自动识别,如果输入的格式是列表(左右带中括号),则eval()会自动转换为列表。
max()函数自动得到列表中的最大值,也是要生成的元组t的第一个元素
enumerate()函数可以把列表中的元素按照序号(列表中的位置)依次列出,所以如果元素大小等于最大值(j == max(a))则把它的位置序号加到一个新的可迭代对象里。
*星号用于解包,是把 for in生成的元素解包出来,加入到元组t中。


def function(arr: list) -> tuple:
    """
    :param arr:
    :return:
    """
    buffer_arr = []
    max_num = arr[0]
    for k, v in enumerate(arr):
        if v > max_num:
            buffer_arr = [k]
            max_num = v
        elif v == max_num:
            buffer_arr.append(k)
    return max_num, buffer_arr


if __name__ == '__main__':
    a = [1, 15, 5, 9, 7, 8, 11, 15, 1, 2, 15]
    res = function(a)
    print("原数组:", a)
    print("结果:", res)

img


先假定第一个元素是最大值max_num,设定一个buffer_arr来储存索引,然后遍历整个列表,如果有元素大于max_num,那么清空buffer_arr
并且令max_num等于该元素,若有元素与max_num相等,那么buffer_arr记录这个元素的索引,时间复杂度为O1
按照题目要求可以写成这样,把max_num和buffer_arr加入到一个list里面,然后转换为元祖


def function(arr: list) -> tuple:
    """
    :param arr:
    :return:
    """
    buffer_arr = []
    max_num = arr[0]
    for k, v in enumerate(arr):
        if v > max_num:
            buffer_arr = [k]
            max_num = v
        elif v == max_num:
            buffer_arr.append(k)
    result = tuple([max_num] + buffer_arr)
    return result


if __name__ == '__main__':
    a = [1, 15, 5, 9, 7, 8, 11, 15, 1, 2, 15]
    res = function(a)
    print("原数组:", a)
    print("结果:", res)

img


  # 定义函数  
def IndexOfLargestElement(list):  
    return [i for i, a in enumerate(list) if a == max(list)]  
  
  
# 主函数  
temp = []  
print("Please input numbers to end with -1:")  
# 循环获取输出  
while True:  
    a = eval(input())  
    if a == -1:  
        break  
    temp.append(a)  
  
# 进行输出  
print(IndexOfLargestElement(temp))