python 排序問題

在排序問題中,常見的就是下面幾類:

1、從小到大 或  從大到小

2、元素反轉

3、列表元素去重。

下面分別來看在python中如何實現:

一、從小到大 或  從大到小

可以使用的函數:list.sort()  、 sorted(list) 兩個函數。區別如下:

a、list.sort()方法來排序,此時list本身將被修改。通常此方法不如sorted()方便,但是如果你不需要保留原來的list,此方法將更有效。

b、list.sort()方法僅被定義在list中,相反地sorted()方法對所有的可迭代序列都有效。

1、使用sorted(list)排序

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# 排序操作:
# 1.1 從小到大
list1_1 = sorted(list0)
print('原列表:\n',list0)
print('sorted()從小到大:\n',list1_1)

# 1.2 從大到小
list1_2 = sorted(list0,reverse=True)
#list1_2.sort(reverse=True)
print('原列表:\n',list0)
print('sorted()從大到小:\n',list1_2) 

運行結果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sorted()從小到大:
 [1, 1, 2, 2, 4, 4, 5, 6, 7, 7, 9, 44]

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sorted()從大到小:
 [44, 9, 7, 7, 6, 5, 4, 4, 2, 2, 1, 1]

2、使用 list.sort() 排序

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# 排序操作:
# 1.1 從小到大
list1_1 = list0[:]
list1_1.sort()
print('原列表:\n',list0)
print('sort()從小到大:\n',list1_1)

# 1.2 從大到小
list1_2 = list0[:]
list1_2.sort(reverse=True)
#list1_2.sort(reverse=True)
print('原列表:\n',list0)
print('sort()且從大到小:\n',list1_2) 

運行結果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sort()從小到大:
 [1, 1, 2, 2, 4, 4, 5, 6, 7, 7, 9, 44]

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sort()且從大到小:
 [44, 9, 7, 7, 6, 5, 4, 4, 2, 2, 1, 1]

二、反轉排序

使用 reversed(list) 函數來實現,但是一定要注意,要使用  list(reversed(list_name)) 的形式才能輸出 列表

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# reversed 必須跟 list一起用,輸出的結果纔是列表
list1_3 = list(reversed(list0))  
print('原列表:\n',list0)
print('list(reversed())操作之後:\n',list1_3) 

運行結果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
list(reversed())操作之後:
 [1, 7, 44, 6, 4, 2, 9, 7, 5, 4, 2, 1]

三、列表去重

用到  set(list) 函數

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# set 必須跟 list一起用,輸出的結果纔是列表
list2 = list(set(list0))       # 改變了列表順序的去重方法
list2_1 = sorted(set(list0),key=list0.index)  # 不改變列表順序的去重方法
print('原列表:\n',list0)
print('list(set())操作之後(改變列表元素順序):\n',list2)
print('list(set())操作之後(不改變列表元素順序):\n',list2_1) 

運行結果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
list(set())操作之後(改變列表元素順序):
 [1, 2, 4, 5, 6, 7, 9, 44]
list(set())操作之後(不改變列表元素順序):
 [1, 2, 4, 5, 7, 9, 6, 44]

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章