问题恰好是:创建一个函数(jumpMaximum),在给定整数列表的任何列表的情况下,该函数返回具有与list相同的元素的列表, 除了第一个元素已与列表中的最大元素交换。 注意:此功能不应打印列表,而应将其返回。 到目前为止,我的代码是:
def jumpMaximum (list):
maximum= list[0]
for i in range(len(list)):
for j in range(len(list)):
if i>j and i>maximum:
maximum=i
maximum, list[0] = list[0], maximum
return list
print(jumpMaximum([1,2,3,4]))
现在,当我运行它时,我得到[3,2,3,4],但这当然是错误的。我做了for循环来遍历列表并找到最大值。然后我写了// maximum,list [0] = list [0],maximum //将第一个元素与max交换,所以我不确定它出了什么问题。
答案 0 :(得分:2)
您可以执行以下操作:
def jump_maximum(lst):
_, i = max((e, i) for i, e in enumerate(lst))
lst[0], lst[i] = lst[i], lst[0]
return lst
print(jump_maximum([1, 2, 3, 4]))
输出
[4, 2, 3, 1]
想法是结合使用enumerate和max来找到最大元素的索引(i
),然后简单地交换元素并返回列表。
作为旁注,您不应为变量使用诸如列表之类的名称,因为它会遮盖内置的list。
更新
如果您不能使用enumerate
或max
,可以这样做:
def jump_maximum(lst):
i, ma = 0, lst[0]
for j in range(len(lst)):
if lst[j] > ma:
ma = lst[j]
i = j
lst[0], lst[i] = lst[i], lst[0]
return lst
print(jump_maximum([1, 2, 3, 4]))
输出
[4, 2, 3, 1]
这个想法是用enumerate
循环代替max
和for
。另外,您不需要嵌套循环。