题目描述:
给定一个整数数组 arr,请找出数组中的最大值及其在数组中的下标序列。
您需要编写一个程序,输出数组中的最大值以及所有出现该最大值的下标。
输入:
输出:
示例:
输入:
5
1 3 7 2 7
输出:
7
2 4
提示:
在正式讲解本题之前,先做一些知识补充:
在 Python 中,三目运算符(也称为条件表达式)是一种简洁的条件判断语法。其语法格式为:
expression1 if condition else expression2
True
或 False
)。True
时执行的表达式。False
时执行的表达式。整个表达式的结果是 expression1 或 expression2 的值,具体取决于 condition
的结果。
a = 10
b = 20
max_value = a if a > b else b # 如果 a > b 为 True,max_value 等于 a,否则等于 b
print("The maximum is:", max_value)
输出:
The maximum is: 20
a = 10
b = 20
c = 15
max_value = a if a > b else (b if b > c else c)
print("The maximum is:", max_value)
解释:
a > b
为 True
,直接取 a
。a > b
为 False
,继续判断 b > c
,为 True
取 b
,否则取 c
。输出:
The maximum is: 20
可读性:
if-else
结构。返回值类型:
expression1
和 expression2
共同决定。如果两者类型不同,可能会发生隐式类型转换。a = 10
b = 20.5
result = a if a > b else b # result 的类型为 float
print(result) # 输出: 20.5
仅作为表达式:
condition ? expr1 : expr2
,需要将结果赋值给变量或用于函数调用中。if-else
结构,使代码更加简洁。特性 | 三目运算符 | if-else |
---|---|---|
简洁性 | 更简洁,适合简单条件判断 | 适合复杂逻辑 |
可读性 | 复杂时降低 | 可读性较高 |
多分支支持 | 仅支持单条件或嵌套 | 直接支持多条件分支 |
语法结构 | 表达式(返回值) | 语句块(可执行多条语句) |
三目运算符:
max_value = a if a > b else b
if-else:
if a > b:
max_value = a
else:
max_value = b
根据实际需求选择适合的方式!
给定一个整数数组 arr
,请找出数组中的最大值及其在数组中的下标序列。
您需要编写一个程序,输出数组中的最大值以及所有出现该最大值的下标。
n
(1 ≤ n ≤ 1000
),表示数组的大小。n
个整数,表示数组的元素,元素范围为 1 ≤ arr[i] ≤ 1000
。0
开始),下标之间以空格分隔。5
1 3 5 3 5
5
2 4
我们需要找出数组中的最大值以及所有出现该最大值的下标。具体步骤如下:
读取输入:
n
。找出最大值:
max()
找出数组中的最大值。找出所有最大值的下标:
输出结果:
读取输入
n = int(input())
arr = list(map(int, input().split()))
input()
函数用于从标准输入读取一行输入。int()
函数将输入的字符串转换为整数类型,存储在变量 n
中。map(int, input().split())
将输入的字符串按空格分割,并转换为整数,最后使用 list()
转换为列表 arr
。找出最大值
max_value = max(arr)
max()
找出列表 arr
中的最大值,存储在变量 max_value
中。找出所有最大值的下标
indices = [str(index) for index, value in enumerate(arr) if value == max_value]
enumerate()
函数遍历列表 arr
。enumerate(arr)
会返回一个包含元素下标和元素值的迭代器。value
等于 max_value
,则将其下标 index
转换为字符串并添加到列表 indices
中。输出结果
print(max_value)
print(' '.join(indices))
print(max_value)
输出最大值。' '.join(indices)
将列表 indices
中的所有下标字符串用空格连接起来,形成一个单一的字符串,然后输出。# 读取数组大小
n = int(input())
# 读取数组元素
arr = list(map(int, input().split()))
# 找出最大值
max_value = max(arr)
# 找出所有最大值的下标
indices = [str(index) for index, value in enumerate(arr) if value == max_value]
# 输出最大值
print(max_value)
# 输出所有最大值的下标,空格分隔
print(' '.join(indices))
input()
函数读取并转换输入数据,map()
和列表推导式简化数据处理。max()
函数快速找出列表中的最大值。enumerate()
函数结合列表推导式高效地找到所有满足条件的下标。' '.join()
将列表中的元素转换为指定格式的字符串,方便输出。