精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

掌握 Python 列表排序的 15 個方法

開發 后端
本文詳細介紹了Python中列表排序的各種方法,從基本的 sorted() 和 list.sort() 到更高級的 numpy、pandas 和自定義排序邏輯。

大家好!今天我們要聊的是Python中列表排序的各種方法。無論你是剛入門的小白,還是有一定基礎的進階者,這篇文章都會對你有所幫助。我們將從最基礎的方法開始,逐步深入到更高級的技巧。話不多說,讓我們開始吧!

1. 使用 sorted() 函數

sorted() 是Python內置的一個函數,可以用來對任何可迭代對象進行排序,返回一個新的已排序列表。

# 基本用法
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 輸出: [1, 2, 5, 5, 6, 9]

# 反向排序
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # 輸出: [9, 6, 5, 5, 2, 1]

2. 使用 list.sort() 方法

list.sort() 是列表對象的一個方法,用于原地排序列表,不返回新的列表。

# 基本用法
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers)  # 輸出: [1, 2, 5, 5, 6, 9]

# 反向排序
numbers.sort(reverse=True)
print(numbers)  # 輸出: [9, 6, 5, 5, 2, 1]

3. 按字符串長度排序

有時候我們需要按字符串的長度進行排序,這可以通過 key 參數來實現。

words = ["apple", "banana", "cherry", "date"]
sorted_words_by_length = sorted(words, key=len)
print(sorted_words_by_length)  # 輸出: ['date', 'apple', 'cherry', 'banana']

4. 按自定義函數排序

我們可以使用 key 參數傳入一個自定義函數,以實現更復雜的排序邏輯。

def custom_key(word):
    return word[-1]  # 按最后一個字符排序

words = ["apple", "banana", "cherry", "date"]
sorted_words_custom = sorted(words, key=custom_key)
print(sorted_words_custom)  # 輸出: ['date', 'apple', 'banana', 'cherry']

5. 按多個條件排序

有時我們需要按多個條件進行排序,這可以通過傳遞一個元組作為 key 參數來實現。

students = [
    {"name": "Alice", "age": 20},
    {"name": "Bob", "age": 22},
    {"name": "Charlie", "age": 20}
]

# 先按年齡排序,再按名字排序
sorted_students = sorted(students, key=lambda x: (x['age'], x['name']))
print(sorted_students)
# 輸出: [{'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 20}, {'name': 'Bob', 'age': 22}]

6. 按數值絕對值排序

有時我們需要按數值的絕對值進行排序,這同樣可以通過 key 參數來實現。

numbers = [-5, 2, -1, 3, 0, -2]
sorted_numbers_abs = sorted(numbers, key=abs)
print(sorted_numbers_abs)  # 輸出: [0, -1, 2, -2, 3, -5]

7. 按對象屬性排序

如果列表中的元素是對象,我們可以按對象的某個屬性進行排序。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [
    Person("Alice", 20),
    Person("Bob", 22),
    Person("Charlie", 20)
]

# 按年齡排序
sorted_people = sorted(people, key=lambda x: x.age)
for person in sorted_people:
    print(person.name, person.age)
# 輸出: Alice 20, Charlie 20, Bob 22

8. 使用 operator.attrgetter 和 operator.itemgetter

operator 模塊提供了 attrgetter 和 itemgetter 函數,可以簡化按屬性或鍵值排序的操作。

from operator import attrgetter, itemgetter

# 按對象屬性排序
sorted_people_attr = sorted(people, key=attrgetter('age'))
for person in sorted_people_attr:
    print(person.name, person.age)
# 輸出: Alice 20, Charlie 20, Bob 22

# 按字典鍵值排序
students = [
    {"name": "Alice", "age": 20},
    {"name": "Bob", "age": 22},
    {"name": "Charlie", "age": 20}
]

sorted_students_item = sorted(students, key=itemgetter('age'))
print(sorted_students_item)
# 輸出: [{'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 20}, {'name': 'Bob', 'age': 22}]

9. 使用 heapq.nsmallest 和 heapq.nlargest

heapq 模塊提供了 nsmallest 和 nlargest 函數,可以快速找到列表中的最小或最大元素。

import heapq

numbers = [5, 2, 9, 1, 5, 6]

# 找到前3個最小的數
smallest_three = heapq.nsmallest(3, numbers)
print(smallest_three)  # 輸出: [1, 2, 5]

# 找到前3個最大的數
largest_three = heapq.nlargest(3, numbers)
print(largest_three)  # 輸出: [9, 6, 5]

10. 使用 pandas 庫排序

如果你處理的是數據科學相關的任務,pandas 庫提供了強大的數據處理功能,包括排序。

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [20, 22, 20]
}

df = pd.DataFrame(data)

# 按年齡排序
sorted_df = df.sort_values(by='age')
print(sorted_df)
# 輸出:
#       name  age
# 0   Alice   20
# 2  Charlie  20
# 1     Bob   22

11. 使用 numpy 庫排序

numpy 是一個強大的科學計算庫,它提供了高效的數組操作功能,包括排序。

import numpy as np

numbers = [5, 2, 9, 1, 5, 6]
np_numbers = np.array(numbers)

# 升序排序
sorted_np_numbers = np.sort(np_numbers)
print(sorted_np_numbers)  # 輸出: [1 2 5 5 6 9]

# 降序排序
sorted_np_numbers_desc = np.sort(np_numbers)[::-1]
print(sorted_np_numbers_desc)  # 輸出: [9 6 5 5 2 1]

12. 自定義比較函數

在某些情況下,我們需要更復雜的排序邏輯,可以使用 functools.cmp_to_key 將自定義的比較函數轉換為 key 函數。

from functools import cmp_to_key

def custom_compare(x, y):
    if x < y:
        return -1
    elif x > y:
        return 1
    else:
        return 0

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers_custom = sorted(numbers, key=cmp_to_key(custom_compare))
print(sorted_numbers_custom)  # 輸出: [1, 2, 5, 5, 6, 9]

13. 穩定排序

穩定排序是指在排序過程中,相同元素的相對位置保持不變。sorted() 和 list.sort() 都是穩定的排序算法。

students = [
    {"name": "Alice", "age": 20},
    {"name": "Bob", "age": 22},
    {"name": "Charlie", "age": 20}
]

# 先按名字排序,再按年齡排序
students.sort(key=lambda x: x['name'])
students.sort(key=lambda x: x['age'])

for student in students:
    print(student['name'], student['age'])
# 輸出: Alice 20, Charlie 20, Bob 22

在這個例子中,先按名字排序,再按年齡排序,保證了相同年齡的學生的名字順序不變。

14. 多級排序(使用 pandas)

pandas 庫不僅支持單級排序,還支持多級排序。

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [20, 22, 20, 21],
    'score': [85, 90, 88, 92]
}

df = pd.DataFrame(data)

# 先按年齡升序排序,再按分數降序排序
sorted_df = df.sort_values(by=['age', 'score'], ascending=[True, False])
print(sorted_df)
# 輸出:
#      name  age  score
# 0   Alice   20     85
# 2  Charlie  20     88
# 3   David   21     92
# 1     Bob   22     90

15. 使用 itertools.groupby 進行分組排序

itertools.groupby 可以將列表按某個條件分組,然后再對每個組進行排序。

from itertools import groupby

students = [
    {"name": "Alice", "age": 20},
    {"name": "Bob", "age": 22},
    {"name": "Charlie", "age": 20},
    {"name": "David", "age": 21}
]

# 先按年齡排序
students.sort(key=lambda x: x['age'])

# 按年齡分組
grouped_students = {k: list(v) for k, v in groupby(students, key=lambda x: x['age'])}

for age, group in grouped_students.items():
    print(f"Age: {age}")
    for student in group:
        print(student['name'], student['age'])
# 輸出:
# Age: 20
# Alice 20
# Charlie 20
# Age: 21
# David 21
# Age: 22
# Bob 22

實戰案例分析

假設你是一家在線書店的開發人員,需要對書籍按評分和銷量進行排序。我們將使用前面學到的多種排序方法來實現這個需求。

books = [
    {"title": "Book A", "rating": 4.5, "sales": 500},
    {"title": "Book B", "rating": 4.2, "sales": 300},
    {"title": "Book C", "rating": 4.7, "sales": 700},
    {"title": "Book D", "rating": 4.3, "sales": 400}
]

# 先按評分降序排序,再按銷量降序排序
sorted_books = sorted(books, key=lambda x: (-x['rating'], -x['sales']))

for book in sorted_books:
    print(book['title'], book['rating'], book['sales'])
# 輸出:
# Book C 4.7 700
# Book A 4.5 500
# Book D 4.3 400
# Book B 4.2 300

在這個案例中,我們使用了 lambda 表達式和 key 參數來實現多級排序。希望這個案例能幫助你更好地理解和應用這些排序方法。

總結

本文詳細介紹了Python中列表排序的各種方法,從基本的 sorted() 和 list.sort() 到更高級的 numpy、pandas 和自定義排序邏輯。通過這些方法,你可以靈活地應對各種排序需求。

責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關推薦

2025-01-03 08:48:20

列表推導式Python編程

2009-11-20 09:24:10

PHP多維數組排序

2020-10-30 08:58:33

Python列表開發

2024-07-03 10:31:21

2023-10-04 00:02:00

本文將從入門到精通,冒泡排序

2024-06-28 09:52:47

列表Python

2021-09-27 10:07:39

Python 開發編程語言

2024-05-13 09:06:15

代碼PythonPEP 8

2011-02-17 14:43:29

Windows 7加速

2021-06-24 17:55:40

Python 開發編程語言

2023-07-04 15:52:49

JavaScript數組

2025-08-25 06:00:00

Python編程排序算法

2009-06-26 10:10:00

Hibernate狀態

2024-02-22 15:31:46

Python排序

2020-03-19 15:30:08

JavaScript數組字符串

2024-05-20 10:00:00

代碼Python編程

2022-04-28 10:47:09

漏洞網絡安全網絡攻擊

2024-11-27 06:46:47

Python列表推導式嵌套邏輯

2024-12-17 17:20:00

Python列表

2024-12-23 08:10:00

Python代碼性能代碼
點贊
收藏

51CTO技術棧公眾號

久久免费精品国产| 亚洲欧美日韩国产yyy| 欧美精品xxxxx| 九色丨蝌蚪丨成人| 欧美又粗又大又爽| 女人被男人躁得好爽免费视频| 免费看国产片在线观看| 日韩av中文字幕一区二区三区| 日韩一区视频在线| 黄色短视频在线观看| 91嫩草国产线观看亚洲一区二区| 亚洲午夜免费视频| 性欧美大战久久久久久久免费观看| 91片黄在线观看喷潮| 国产精品美女| 欧美wwwxxxx| 爱爱免费小视频| 视频一区中文字幕精品| 色婷婷av久久久久久久| av动漫在线免费观看| 黄色av网站在线免费观看| 国产91在线观看| 国产精品揄拍一区二区| 91香蕉在线视频| 中文一区一区三区免费在线观看| 亚洲免费av电影| av天堂一区二区| 96sao精品免费视频观看| 日韩欧美在线视频日韩欧美在线视频 | 亚洲欧洲另类国产综合| 蜜桃av色综合| 熟妇高潮一区二区三区| 国产精品一区二区你懂的| 国产精品爽黄69天堂a| 99热国产在线观看| 好吊一区二区三区| 欧美成人久久久| 男女全黄做爰文章| 成人激情诱惑| 亚洲小视频在线观看| 精品人妻一区二区三区日产乱码卜| 亚洲码欧美码一区二区三区| 欧美日本韩国一区二区三区视频| 爱情岛论坛成人| 久久久一本精品| 色婷婷久久99综合精品jk白丝| 国产老熟妇精品观看| 丰满大乳少妇在线观看网站| 一区二区三区在线视频免费观看 | 国产精品jizz| 欧美亚洲tv| 亚洲第一视频在线观看| 老司机免费视频| 久久夜色精品国产噜噜av小说| 日韩精品一区二区三区在线| 粗大的内捧猛烈进出视频| 欧美欧美在线| 精品国产一区a| 图片区偷拍区小说区| 大奶在线精品| 亚洲激情小视频| 日本xxx在线播放| 狠狠做深爱婷婷综合一区| 亚洲欧美制服第一页| 精品国产av无码| 国产一区二区三区91| 中文字幕亚洲一区二区三区| 精品人妻一区二区三区四区| 日本女优一区| 久久视频在线免费观看| 久久久久久久久97| 在线成人www免费观看视频| 97高清免费视频| 波多野结衣一二区| 久久狠狠亚洲综合| 国产精品国产一区二区| 免费一级在线观看| 国产精品短视频| 精品视频在线观看一区| 欧美日韩精品免费观看视完整| 欧美理论片在线| 免费观看污网站| 精品国产乱码久久久久久蜜坠欲下| 色系列之999| 国产乱国产乱老熟300| 99精品国产99久久久久久福利| 欧美一级视频免费在线观看| 亚洲一区 中文字幕| 国产1区2区3区精品美女| 免费在线成人av电影| 毛片网站在线免费观看| 香蕉成人伊视频在线观看| 白嫩少妇丰满一区二区| 国产成人免费视频网站视频社区| 欧美不卡激情三级在线观看| 成年人免费观看视频网站| 一区二区国产在线| 日本免费一区二区三区视频观看| 一区二区三区免费观看视频| 不卡一二三区首页| 亚洲乱码国产乱码精品天美传媒| 久久亚洲资源| 欧美日韩免费在线视频| 亚洲精品女人久久久| 国产精品videosex性欧美| 97视频com| 国产日韩精品suv| 国产日韩av一区二区| 国产xxxx振车| 高清久久一区| 一区二区欧美日韩视频| 国产精品二区一区二区aⅴ| 久久精品国产久精国产爱| 精品乱码一区二区三区| av免费在线观看网址| 欧美亚洲综合一区| 欧美丰满少妇人妻精品| 在线精品国产| 51ⅴ精品国产91久久久久久| www.国产黄色| 综合欧美亚洲日本| 国产三级三级看三级| 综合伊思人在钱三区| 久久久久久久久久久成人| 免费视频久久久| 成人在线综合网| 亚洲黄色网址在线观看| 粉嫩91精品久久久久久久99蜜桃| 亚洲人成网站在线播| 91精品国产高潮对白| 国产suv精品一区二区883| 中文精品一区二区三区 | 日本道精品一区二区三区 | 国产精品久久久久一区二区三区 | 亚洲大尺度在线观看| 99re成人在线| 欧美色图色综合| 国产一区二区三区亚洲| 久久免费视频网站| 亚洲男女视频在线观看| 亚洲自拍偷拍综合| 91精品人妻一区二区三区蜜桃2| 99成人超碰| 成人av在线亚洲| 日本亚洲精品| 91精品国产综合久久久久久久久久| 久久久久99精品成人| 久久99日本精品| 爱爱爱视频网站| www一区二区三区| 欧美裸体男粗大视频在线观看| 国产农村老头老太视频| 最新欧美精品一区二区三区| 婷婷激情小说网| 午夜精品国产| 国产日韩一区二区三区| 综合另类专区| 这里只有精品在线播放| 一区二区久久精品66国产精品 | 成人美女在线观看| 99精品在线免费视频| 一本久久青青| 国产精品久久久久久久午夜| 国产精品一二三区视频| 欧美日韩色一区| 国产盗摄一区二区三区在线| 风间由美性色一区二区三区| 欧美网站免费观看| 精品久久久久久久久久久下田| 国产精品永久免费视频| 主播国产精品| 亚洲精品国产拍免费91在线| 国产男人搡女人免费视频| 自拍偷自拍亚洲精品播放| 91精品啪在线观看国产| 久久一区中文字幕| 国产一区一区三区| 国产精品久久久久久久久久白浆| 欧美一级片在线播放| 秋霞a级毛片在线看| 欧美一区二区播放| 在线观看日本网站| 亚洲啪啪综合av一区二区三区| 欧美xxxxx少妇| 日韩精品亚洲专区| 青草全福视在线| 亚洲aa在线| 亚洲一区二区中文| 午夜精品久久久久久久久久蜜桃| 久久久极品av| 日本精品专区| 日韩视频免费观看高清完整版| 国产精品视频久久久久久久| 中文字幕在线观看不卡| 国产精品一级黄片| 精品一区二区三区免费观看| 久久久久久久久久久视频| 99精品综合| 麻豆久久久9性大片| 精品视频一区二区三区在线观看 | 黄色一级片在线看| 日韩在线二区| 精品欧美国产一区二区三区不卡| 久久青草视频| 国产91精品在线播放| 四虎亚洲精品| 久久精品成人欧美大片古装| 黄色网址在线播放| 精品国产乱码久久久久久免费| 亚洲综合一区中| 色香蕉久久蜜桃| 国产无码精品久久久| 亚洲特级片在线| 欧美激情视频二区| 91啪亚洲精品| 日批在线观看视频| 国产高清久久久久| 亚洲第一色av| 日本中文在线一区| 99草草国产熟女视频在线| 一区二区三区福利| 亚洲国产精品无码观看久久| 91精品啪在线观看国产18| 日韩欧美一区二区在线观看| 少妇久久久久| 国产综合动作在线观看| 日本免费一区二区视频| 成人精品福利视频| 日韩福利在线观看| 国产日本欧美一区二区三区在线| 香蕉成人av| 国产成人一区二区三区| 成人在线爆射| 国产精品久久久久久久app| **在线精品| 国产91九色视频| 亚洲女同av| 清纯唯美亚洲综合| 美女福利一区二区| 国产成人精品在线视频| 欧美大片1688网站| 国产精品视频导航| 欧美风情在线视频| 成人欧美一区二区三区在线 | 4438成人网| 91国偷自产中文字幕久久| 欧美日韩国产系列| 91欧美日韩麻豆精品| 欧美一区二区网站| 二区三区在线视频| 亚洲激情小视频| 欧美日韩视频精品二区| 国产一区二区三区精品久久久| av在线电影免费观看| 色偷偷综合社区| 天堂av资源在线观看| 国内免费久久久久久久久久久| 91超碰免费在线| 日韩av男人的天堂| 日本一区二区中文字幕| 亚洲va电影大全| 久久99偷拍| 色综合久久av| 午夜影院欧美| 国产手机免费视频| 免播放器亚洲| 欧美美女一级片| 丁香另类激情小说| 国产乱了高清露脸对白| 欧美激情一区在线| 欧美色图亚洲天堂| 欧美午夜精品久久久久久浪潮| 在线观看你懂的网站| 欧美一三区三区四区免费在线看 | 欧美一级片网址| 国产区日韩欧美| 不卡在线一区| 800av在线免费观看| 日韩黄色在线观看| 少妇丰满尤物大尺度写真| 91欧美激情一区二区三区成人| 九九热免费在线| 亚洲一区二区三区四区五区黄| aaaaaa毛片| 欧美一二三四在线| 国产主播福利在线| 欧美猛男性生活免费| 中文av在线全新| 亚洲在线免费观看| 国内黄色精品| 久久人人爽人人爽人人av| 另类小说视频一区二区| 午夜视频在线观看国产| 国产精品美女www爽爽爽| 亚洲一区 视频| 91精品国产免费| 国产三级视频在线| 久久理论片午夜琪琪电影网| 成人看片毛片免费播放器| 国内精品二区| 欧美国产激情| 粉色视频免费看| 久久久亚洲精品一区二区三区| 久久久国产精品人人片| 欧美日韩久久一区| 四虎影院在线域名免费观看| 欧美精品性视频| 成人不卡视频| 欧美日本亚洲| 亚洲精华国产欧美| 香蕉视频xxxx| 国产精品初高中害羞小美女文| 欧美日韩乱国产| 欧美不卡一区二区三区四区| 免费黄色在线| 国产精品久久久久久久久久东京| 农村少妇一区二区三区四区五区| 精品91一区二区三区| 久久国产夜色精品鲁鲁99| 久久丫精品忘忧草西安产品| 欧美色播在线播放| 色婷婷激情五月| 久久免费国产视频| ady日本映画久久精品一区二区| 国产成人免费高清视频| 六月丁香婷婷色狠狠久久| 波多野在线播放| 色哟哟欧美精品| 你懂的在线视频| 欧美中文字幕第一页| 精品资源在线| 日本国产在线播放| av一区二区三区| 在线看成人av| 精品无码久久久久久国产| 高潮在线视频| 久久精品日产第一区二区三区乱码| 亚洲天堂男人| 国产高清成人久久| 精品久久久久人成| 四虎免费在线观看| 91国产美女视频| 亚洲盗摄视频| 黄色av免费在线播放| 国产色综合久久| 怡红院男人天堂| xvideos亚洲人网站| 高清一区二区三区av| 黄色网络在线观看| 国产精品香蕉一区二区三区| 国产亚洲精品久久777777| 精品久久国产老人久久综合| 成人免费一区二区三区牛牛| 国产中文一区二区| 久久狠狠一本精品综合网| 一级黄色性视频| 欧美日产国产精品| 在线观看的网站你懂的| 99国产在线| 亚洲免费在线| 国产又粗又猛又爽又黄的视频四季 | 在线观看国产一级片| 成人欧美一区二区三区小说| 国产精品毛片一区二区在线看舒淇 | 日韩精品91亚洲二区在线观看 | 国产日韩视频一区| 欧美性精品220| 成人在线免费观看| 91午夜理伦私人影院| 国产精品黄色| 最新中文字幕av| 日韩一区二区中文字幕| 波多野结衣在线播放| 欧美日本国产精品| 国产一区二区免费看| 亚洲精品1区2区3区| 国产一区二区精品丝袜| 美女日韩一区| 91猫先生在线| 国产精品久久777777| 亚洲精品字幕在线观看| 日韩av不卡在线| 天天做天天爱天天爽综合网| 毛茸茸free性熟hd| 欧美视频完全免费看| 激情影院在线| 日本一区二区三区视频在线观看| 国产在线精品免费| 天天综合天天干| 久久视频免费观看| 神马香蕉久久| 97免费公开视频| 色综合天天视频在线观看| wwwav在线| 欧美日韩在线观看一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 毛片毛片女人毛片毛片| 精品少妇一区二区30p| 国产videos久久| 国产精品一区二区在线免费观看|