1、交互列表元素时,须要注意的坑。字体
例如: array=[4,5,9,8,10,8,4,0,3,4] 最大的值与第一个元素交换,最小的值与最后一个元素交换spa
# -*- coding: UTF-8 -*-索引
array=[4,5,9,8,10,8,4,0,3,4]coding
maxa = max(array) #列表最大值
mina = min(array) #列表最小值
len_array = len(array) - 1
max_index = array.index(maxa) #列表最大值的位置
if max_index != 0: #最大值不在第一个位置
array[0], array[max_index] = maxa, array[0] #列表最大值和第一个值互换 #第一种写法语法
#array[0],array[array.index(max(array))]=maxa,array[0] #第二种写法(错误)di
min_index = array.index(mina) #取列表最小值co
if min_index != len_array: #最小值不在最后一个位置错误
array[-1], array[min_index] = mina, array[-1] #列表最小值和最后一个值互换
print array交互
错误缘由:红色字体那种写法得不到正确结果,列表位置未更换。index
表面看第一种写法和第二种写法等价,其实在整句语法中array值已经有变化了,再找的最大值索引位置已不一样。
由于array[0]=maxa 以后array.index(max(array))再去找最大值的索引位置,找到的是交换最大值以后的array[0],再将原array[0]的值替换掉如今的array[0],结果又换回来了。找最大值的索引位置要在任何替换操做以前。