我正在尝试将最后一项与列表中的最大数字交换,但它不会打印任何内容
a=[3,4,2,2,43,7]
maxindex=0
for i in range(len(a)):
if a[i] is max(a):
maxno = a[i]
maxindex = i
if a[maxindex] < a[len(a)-1]:
a[maxindex],a[len(a)-1] = a[len(a)-1],a[maxindex]
print(a)
预期结果为[3,4,2,2,7,43]
答案 0 :(得分:1)
查找两个数字的索引。将它们分配给两个单独的变量。然后,交换它们,如下:
>>> a = [3,4,2,2,43,7]
>>> last_index = a.index(a[-1])
>>> max_num_index = a.index(max(a))
>>> a[last_index], a[max_num_index] = a[max_num_index], a[last_index]
>>> a
[3, 4, 2, 2, 7, 43]
答案 1 :(得分:0)
这应解决它:
a=[3,4,2,2,74, 300,70]
a[a.index(max(a))], a[-1] = a[-1], a[a.index(max(a))]
print(a)
备注:这仅适用于没有重复的最大元素。
答案 2 :(得分:0)
您可以通过一种简单的方式完成此操作:通过查找最大项目的位置来交换最后一项的最大项目
a = [3,4,2,2,43,7]
a[a.index(max(a))], a[-1] = a[-1], a[a.index(max(a))]
print(a)
[3, 4, 2, 2, 7, 43]
为了提高效率(正如注释中PM2Ring所指出的那样),并且避免找到最多两次(O(n)操作),您可以先将索引保存在变量中,然后在交换中使用它: / p>
a = [3,4,2,2,43,7]
max_index = a.index(max(a))
a[max_index], a[-1] = a[-1], a[max_index]
print(a)
答案 3 :(得分:0)
方法1:
a = [3,43,2,2,43,7]
maximum = max(a)
for index,data in enumerate(a):
if data == maximum:
a[index] = a[-1]
a[-1] = maximum
print a
方法2 [使用列表理解]:
a = [a[-1] if data == maximum else data for index,data in enumerate(a)]
a[-1] = maximum
print a