1. 修改原列表,不創建新列表的排序
1 a = [3, 2, 8, 4, 6] 2 print(id(a)) # 2180873605704 3 a.sort() # 默認升序 4 print(a) # [2, 3, 4, 6, 8] 5 print(id(a)) # 2180873605704 6 7 a.sort(reverse=True) 8 print(a) # [8, 6, 4, 3, 2]
1 # 將序列的所有元素隨機排序 2 import random 3 b = [3, 2, 8, 4, 6] 4 random.shuffle(b) 5 print(b) # [4, 3, 6, 2, 8]
2. 創建新列表的排序
通過內置函數sorted()
進行排序,這個方法返回新列表,不對原列表做修改。
1 a = [3, 2, 8, 4, 6] 2 b = sorted(a) # 默認升序 3 c = sorted(a, reverse=True) # 降序 4 print(b) # [2, 3, 4, 6, 8] 5 print(c) # [8, 6, 4, 3, 2]
3. 冒泡排序
1 list1 = [34,54,6,5,65,100,4,19,50,3] 2 3 #冒泡排序,以升序為例 4 5 #外層循環:控制比較的輪數 6 for i in range(len(list1) - 1): 7 #內層循環:控制每一輪比較的次數,兼顧參與比較的下標 8 for j in range(len(list1) - 1 - i): 9 #比較:只要符合條件則交換位置, 10 # 如果下標小的元素 > 下標大的元素,則交換位置 11 if list1[j] < list1[j + 1]: 12 list1[j],list1[j + 1] = list1[j + 1],list1[j] 13 print(list1)
4. 選擇排序
1 li = [17, 4, 77, 2, 32, 56, 23] 2 3 # 外層循環:控制比較的輪數 4 for i in range(len(li) - 1): 5 # 內層循環:控制每一輪比較的次數 6 for j in range(i + 1, len(li)): 7 # 如果下標小的元素>下標大的元素,則交換位置 8 if li[i] > li[j]: 9 li[i], li[j] = li[j], li[i] 10 print(li)