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],結果又換回來了。找最大值的索引位置要在任何替換操做以前。