Python學習系列之列表元素的排序(十二)


一、列表元素的排序操作

常見的兩種排序方式:

  1. 調用sort()方法,列中的所有元素默認按照從小到大的順序進行排序,可以指定reserve=True,進行降序排序
  2. 調用內置函數sorted(),可以指定reverse=True,進行降序排序,原列表不發生改變

二、.使用sort()進行排序

1.使用sort()默認排序進行升序排序

#使用sort()排序
lst=[60,80,50,70,88,32]
print('排序前:',lst,id(lst))
lst.sort()
print('排序后:',lst,id(lst))

  執行結果如下:

 

 

 解析:使用sort方法默認進行升序排列且不會改變列表的內存地址空間

2.使用sort(reverse=True)進行降序排序

#使用sort(reverse=True)排序
lst=[60,80,50,70,88,32]
print('排序前:',lst,id(lst))
lst.sort(reverse=True)
print('排序后:',lst,id(lst))

  執行結果如下:

 

 

 解析:lst.sort(reverse=True)表示將lst列表按照降序進行排序,排序時不改變lst列表對象的內存地址,僅僅只是在其內部進行位置的調換

另:當reverse=True時進行降序排序,如果reverse=False時則進行升序排序,舉例:

lst=[60,80,50,70,88,32]
print('排序前:',lst,id(lst))
lst.sort(reverse=False)
print('排序后:',lst,id(lst))

  執行結果如下:

 

 

 解析:故sort(reverse=False)可以對列表進行升序排序,和sort()默認升序排序的結果一樣

 

3.使用內置函數sorted()進行升序排序

舉例:

#調用內置函數sorted()進行升序排序
lst=[60,80,50,70,88,32]
print('排序前:',lst,id(lst))
new_list=sorted(lst)
print('排序后:',new_list,id(new_list))

  執行結果如下:

 

 解析:sorted()方法是內置函數,不需要申明和創建,直接使用即可,sorted(lst)表示調用sorted函數對lst列表進行升序排序,排序完成后會生成一個新的列表對象,原列表不做改變

4.調用內置函數sorted(reverse=True)進行降序排序

舉例:

#調用內置函數sorted(reverse=True)進行降序排序
lst=[60,80,50,70,88,32]
print('排序前:',lst,id(lst))
new_list=sorted(lst,reverse=True)
print('排序后:',new_list,id(new_list))

  執行結果如下:

 

 

 

 解析:sorted(lst,reverse=True)表示調用sorted函數對列表lst進行排序,reverse=True表示是進行降序排序。調用sorted函數就會產生一個新的列表對象,所以新對象new_list的內存地址和原對象lst的內存地址不一致。

當reverse=False,依然是對新列表對象new_list進行升序排序,如下:

#調用內置函數sorted(reverse=False)進行升序排序
lst=[60,80,50,70,88,32]
print('排序前:',lst,id(lst))
new_list=sorted(lst,reverse=False)
print('排序后:',new_list,id(new_list))

  執行結果如下:

 

 

總結:

  1.對列表進行排序以后兩種方式,第一種是使用sort方法,需要使用列表對象進行調用,不使用參數時默認進行升序排序,參數是reverse=True時表示進行降序排序,reverse=False時表示進行升序排序,sort()方法是對列表在原位置進行排序,即在列表內部進行各個值進行位置調整,不會產生新的列表對象

  2.第二種是sorted()方法,sorted()是內置函數,直接使用即可,sorted()函數是在不變動原有列表的基礎上,產生一個新的列表對象,在新列表對象中存放排序后的結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM