Python列表數(shù)據(jù)排序最新實(shí)踐案例
引言
在Python編程中,列表排序是最基礎(chǔ)且高頻的操作之一。本文將系統(tǒng)解析Python內(nèi)置排序方法,結(jié)合最新實(shí)踐案例,助你掌握從簡(jiǎn)單到復(fù)雜的排序技巧。
一、核心排序方法
1. sorted()函數(shù)
- 特性:返回新排序列表,不修改原列表
- 基礎(chǔ)用法:
numbers = [5, 2, 9, 1, 5, 6] sorted_numbers = sorted(numbers) # 升序 [1, 2, 5, 5, 6, 9] sorted_desc = sorted(numbers, reverse=True) # 降序 [9, 6, 5, 5, 2, 1]
2. list.sort()方法
- 特性:原地排序,修改原列表
- 進(jìn)階用法:
words = ["banana", "apple", "cherry"] words.sort(key=len) # 按長(zhǎng)度排序 ['pear', 'apple', 'banana', 'orange']
二、高級(jí)排序技巧
1. 多條件排序
students = [("Alice", 85), ("Bob", 92), ("Alice", 90)]
sorted_students = sorted(students, key=lambda x: (x[0], -x[1]))
# 先按姓名升序,相同姓名時(shí)按成績(jī)降序
# 輸出 [('Alice', 90), ('Alice', 85), ('Bob', 92)]
2. 復(fù)雜對(duì)象排序
class Fruit:
def __init__(self, name, sweetness):
self.name = name
self.sweetness = sweetness
fruits = [Fruit('apple', 7), Fruit('banana', 20)]
sorted_fruits = sorted(fruits, key=lambda x: x.sweetness)
# 按甜度排序 [apple, banana]3. 特殊數(shù)據(jù)結(jié)構(gòu)排序
字典排序:
my_dict = {'apple':4, 'banana':2, 'pear':1}
sorted_items = sorted(my_dict.items(), key=lambda x: x[1])
# 按值升序排序 [('pear',1), ('banana',2), ('apple',4)]三、性能優(yōu)化與最佳實(shí)踐
1. 排序穩(wěn)定性
Python 3.5+的排序默認(rèn)穩(wěn)定,相等元素保持原始順序:
mixed_data = [("apple", 3), ("banana", 3), ("apple", 2)]
stable_sort = sorted(mixed_data, key=lambda x: x[1])
# 輸出 [('apple',2), ('apple',3), ('banana',3)]
2. 大數(shù)據(jù)處理
使用numpy模塊提升效率:
import numpy as np arr = np.array([5, 2, 9, 1]) sorted_arr = np.sort(arr) # 返回排序后的新數(shù)組
3. 特殊場(chǎng)景處理
- 逆序排序:
sorted(numbers, reverse=True) - 絕對(duì)值排序:
sorted(numbers, key=abs) - 自定義比較函數(shù):
from functools import cmp_to_key
def custom_cmp(x, y):
return x - y # 自定義比較邏輯
sorted_list = sorted(numbers, key=cmp_to_key(custom_cmp))
四、常見(jiàn)問(wèn)題解答
Q:sorted()和list.sort()如何選擇?
- 需要保留原列表時(shí)用sorted()
- 需要節(jié)省內(nèi)存時(shí)用list.sort()
Q:如何處理混合數(shù)據(jù)類型?
使用key參數(shù)轉(zhuǎn)換數(shù)據(jù)類型:
mixed_list = [3, "apple", 5.2] sorted_mixed = sorted(mixed_list, key=str) # 統(tǒng)一轉(zhuǎn)為字符串排序
五、總結(jié)
Python的排序體系兼顧了簡(jiǎn)單性與擴(kuò)展性:
- 基礎(chǔ)場(chǎng)景:優(yōu)先使用sorted()或list.sort()
- 復(fù)雜需求:結(jié)合lambda、operator模塊定制排序邏輯
- 高性能場(chǎng)景:numpy排序效率提升顯著
- 特殊需求:heapq模塊實(shí)現(xiàn)部分排序,functools處理多條件排序
掌握這些技巧,可應(yīng)對(duì)99%的排序需求。建議通過(guò)<FILE_START>123456789<FILE_END>代碼示例深入實(shí)踐,體驗(yàn)不同方法的差異。
到此這篇關(guān)于Python列表數(shù)據(jù)排序的文章就介紹到這了,更多相關(guān)Python列表數(shù)據(jù)排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)據(jù)處理67個(gè)pandas函數(shù)總結(jié)看完就用
這篇文章主要介紹了python數(shù)據(jù)處理67個(gè)pandas函數(shù)的梳理總結(jié),看完就可以去用了,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
Python Selenium實(shí)現(xiàn)無(wú)可視化界面過(guò)程解析
這篇文章主要介紹了Python Selenium實(shí)現(xiàn)無(wú)可視化界面過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Python mutiprocessing多線程池pool操作示例
這篇文章主要介紹了Python mutiprocessing多線程池pool操作,結(jié)合實(shí)例形式分析了Python多線程模塊multiprocessing進(jìn)程池相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
Python基礎(chǔ)中的的if-else語(yǔ)句詳解
這篇文章主要為大家詳細(xì)介紹了Python基礎(chǔ)中的的if-else語(yǔ)句,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02
python+unittest+requests實(shí)現(xiàn)接口自動(dòng)化的方法
這篇文章主要介紹了python+unittest+requests實(shí)現(xiàn)接口自動(dòng)化的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
使用Python的package機(jī)制如何簡(jiǎn)化utils包設(shè)計(jì)詳解
這篇文章主要給大家介紹了關(guān)于使用Python的package機(jī)制如何簡(jiǎn)化utils包設(shè)計(jì)的相關(guān)資料,文中通過(guò)示例代碼的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-12-12
Python3實(shí)現(xiàn)發(fā)送QQ郵件功能(附件)
這篇文章主要為大家詳細(xì)介紹了Python3實(shí)現(xiàn)發(fā)送QQ郵件功能,附件方面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
centos+nginx+uwsgi部署django項(xiàng)目上線
本文主要介紹了centos+nginx+uwsgi部署django項(xiàng)目上線,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
用Python實(shí)現(xiàn)協(xié)同過(guò)濾的教程
這篇文章主要介紹了用Python實(shí)現(xiàn)協(xié)同過(guò)濾的教程,主要用于從大數(shù)據(jù)中抽取用戶信息偏好等等,需要的朋友可以參考下2015-04-04

