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)