關(guān)于如何使用python寫一個(gè)去重排序的代碼
方法一:
list3 = [9, 1, 2, 3, 7, 6, 6, 8, 8, 6, 3, 2, 1]
l = list(set(list3))? ?# 先轉(zhuǎn)成集合去重,再轉(zhuǎn)回列表
l.sort(reverse=False) ?# reverse=False(升序)/True(降序)? # 操作



方法二:
class Sort_T_F(object):
? ?def order_by_True(self, i, list1):
? ? ? ?"""升序"""
? ? ? ?num1, num2 = list1[i[0]], list1[i[0] + 1] ?# 冒泡排序 升序
? ? ? ?if i[0] < len(list1):
? ? ? ? ? ?if num2 < num1:
? ? ? ? ? ? ? ?list1[i[0]], list1[i[0] + 1] = num2, num1
? ? ? ? ? ? ? ?print(f"排序過程:{i[0]} {list1}")
? ? ? ? ? ? ? ?return list1
? ?def order_by_False(self, i, list1):
? ? ? ?"""降序"""
? ? ? ?num1, num2 = list1[i[0]], list1[i[0] + 1]
? ? ? ?if i[0] < len(list1):
? ? ? ? ? ?if num2 > num1:
? ? ? ? ? ? ? ?list1[i[0] + 1], list1[i[0]] = num1, num2
? ? ? ? ? ? ? ?print(f"排序過程: {i[0]} ", list1)
? ? ? ? ? ? ? ?return list1
? ?def maopao(self, list1, order_by_desc=False):
? ? ? ?"""
? ? ? ?功能:冒泡排序 ?去重
? ? ? ?:return order_by_desc: ?True(升序) False(降序)
? ? ? ?"""
? ? ? ?for i in enumerate(list1): ?# enumerate 能在迭代過程中把列表以元組的方式顯示出來 (索引, 元素)
? ? ? ? ? if list1.count(i[1]) > 1: ? # 去重
? ? ? ? ? ? ? list1.remove(i[1])
? ? ? ? ? try:
? ? ? ? ? ? ? if not order_by_desc: ?# 升序
? ? ? ? ? ? ? ? ? ?list2 = self.order_by_True(i, list1)
? ? ? ? ? ? ? ? ? ?self.maopao(list2) ?# 遞歸
? ? ? ? ? ? ? else: ? # 降序
? ? ? ? ? ? ? ? ? list2 = self.order_by_False(i, list1)
? ? ? ? ? ? ? ? ? self.maopao(list2, order_by_desc=True) ?# 遞歸
? ? ? ? ? except Exception:
? ? ? ? ? ? ? pass
? ? ? ? ? else:
? ? ? ? ? ? ? ?return list2
if __name__ == '__main__':
? ?a = Sort_T_F()
? ?print(a.maopao([1, 2, 3, 1, 2, 3, 1, 3, 2, 1, 5, 5, 9], order_by_desc=True))

