a=[["李敏","15歲","男","7年級","2班","3.4"],["趙四","16歲","男","8年級","1班","4.0"]]
a.append(["李艷","15歲","女","8年級","1班","3.3"])
a.insert(0,["張曉","17歲","女","8年級","3班","4.2"])
for i in range(len(a)-1): #外層回圈三次 i分別為 0,1,2
for j in range(len(a)-i-1): # j分別為 0~2,0~1,0
if float(a[i][-1])>float(a[i+1][-1]):
a[i],a[i+1]=a[i+1],a[i]
print(a)
最后一項是分數,想從小到大排序,想著是利用冒泡演算法,可是結果不正確。
uj5u.com熱心網友回復:
sorted(a,key=lambda x:float(x[-1]),reverse=False)
uj5u.com熱心網友回復:
a.sort(key=lambda x: x[-1])
uj5u.com熱心網友回復:
樓主要漁,樓上直接給魚了。
uj5u.com熱心網友回復:
剛好有空,對于這種給代碼,給資料的。 一般都樂意試一下。樓主的主要問題是 第2個回圈體里的變數用錯了, 應該是 j 而不是 i
a=[["李敏","15歲","男","7年級","2班","3.4"],["趙四","16歲","男","8年級","1班","4.0"]]
a.append(["李艷","15歲","女","8年級","1班","3.3"])
a.insert(0,["張曉","17歲","女","8年級","3班","4.2"])
def show(sr_list, info=''):
print(info)
for i in sr_list:
print(i)
show(a,'當前')
for i in range(len(a)-1):
for j in range(len(a)-i-1): # j分別為 0~2,0~1,0
if float(a[j][-1])>float(a[j+1][-1]):
a[j],a[j+1]=a[j+1],a[j]
show(a,'結果')
uj5u.com熱心網友回復:
是的,應該變為j,可以解釋下為什么嗎?uj5u.com熱心網友回復:
是因為外層回圈的i在大回圈下只變了三次是吧,我大概知道了,謝謝你。uj5u.com熱心網友回復:
要仔細讀演算法。 畫圖理解演算法。 冒泡和二分法類似,只是基礎 。 編程的路,燒腦。uj5u.com熱心網友回復:
嗯嗯,我剛開始學,會加油的。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/31590.html
