精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩精品一区二区三区免费观影| ririsao久久精品一区| 日日夜夜免费精品视频| 久久久99久久精品女同性| 少妇献身老头系列| 日本美女一区| 一区av在线播放| 婷婷精品国产一区二区三区日韩| 国产suv精品一区二区69| 亚洲欧美高清| 久久中文字幕在线| 久久久久亚洲av成人无码电影| 成人噜噜噜噜| 日本韩国欧美在线| 男人天堂av片| 国产在线观看免费麻豆| 久久伊人中文字幕| 99久久99久久| 国产一区二区小视频| 欧美资源在线| 国语自产偷拍精品视频偷| 亚洲精品自拍视频在线观看| 日韩精品免费一区二区夜夜嗨| 欧美日本乱大交xxxxx| 国产91xxx| 1stkiss在线漫画| 欧美国产日韩a欧美在线观看| 高清免费日韩| 国产富婆一级全黄大片| 蜜桃av一区二区| 啪一啪鲁一鲁2019在线视频| 国产一级二级三级视频| 色综合天天综合网中文字幕| 国产视频精品免费播放| 91精品国产高清91久久久久久| yy6080久久伦理一区二区| 都市激情亚洲色图| 久久av综合网| 欧美aaa免费| 亚洲欧美另类小说视频| 中文字幕久精品免| 99青草视频在线播放视| 久久精品亚洲麻豆av一区二区| 国产富婆一区二区三区| xxxx国产精品| 国产成+人+日韩+欧美+亚洲| 91精品视频大全| 亚洲最大成人av| 久久99蜜桃精品| 国产日韩欧美在线观看| 日本欧美www| 免费日本视频一区| 国产精品视频成人| 夜夜狠狠擅视频| 精品一区二区三区蜜桃| 91视频8mav| 国产av精国产传媒| 国产成人自拍在线| 国产一区二区高清视频| 手机在线不卡av| 2021中文字幕一区亚洲| 麻豆成人小视频| 久久久久久久影视| 国产精品视频免费看| 亚洲一区综合| 丝袜美腿av在线| 亚洲一卡二卡三卡四卡五卡| 性一交一乱一伧国产女士spa| 久久久123| 疯狂做受xxxx高潮欧美日本| 天堂…中文在线最新版在线| 涩涩视频网站在线观看| 日本道色综合久久| 尤物国产在线观看| 136福利精品导航| 亚洲精品www久久久久久广东| 欧美做受喷浆在线观看| 国内黄色精品| 欧美床上激情在线观看| 日韩 欧美 亚洲| 日本欧美久久久久免费播放网| 国产精品久久久久久久美男| 国产色在线视频| 不卡视频在线看| 午夜午夜精品一区二区三区文| 欧美精品日韩少妇| 亚瑟在线精品视频| 婷婷激情四射五月天| 精品一区二区三区中文字幕在线| 精品国产乱码久久久久久夜甘婷婷 | 亚洲麻豆一区| 国产成人鲁鲁免费视频a| 亚洲在线视频播放| 99视频精品全部免费在线| 午夜精品一区二区三区在线观看| 91麻豆免费在线视频| 欧美日韩另类字幕中文| 亚洲精品免费一区亚洲精品免费精品一区| jizz国产精品| 中文字幕视频一区二区在线有码| 欧美成人综合色| 老司机精品视频网站| 91一区二区三区| av电影在线播放高清免费观看| 亚洲综合丝袜美腿| 亚洲欧美偷拍另类| 老司机精品在线| 超碰精品一区二区三区乱码 | 日本精品免费观看高清观看| 黄色a级三级三级三级| 久草精品在线| 久久久久久国产| 一区二区三区精彩视频| xnxx国产精品| 久久99中文字幕| 国产精品一区二区三区av| 亚洲欧美日韩在线一区| 久久久久免费看| 久久国产精品色婷婷| 麻豆精品传媒视频| 91探花在线观看| 欧美变态tickle挠乳网站| 欧日韩不卡视频| 久久中文字幕一区二区三区| 国产精品对白刺激久久久| www.欧美日本韩国| 欧美日韩国产首页| 中文字幕伦理片| 久久久久看片| 欧美h视频在线| 麻豆理论在线观看| 亚洲成人性视频| 国产无码精品视频| 国产成人午夜高潮毛片| 亚洲AV无码成人精品一区| 国产精品99| 伊人男人综合视频网| 黄色片视频免费| 26uuu国产电影一区二区| 乱妇乱女熟妇熟女网站| 精品国产一区二区三区成人影院| 九九热r在线视频精品| 国产精品乱码久久久| 国产精品美女久久久久aⅴ国产馆| 久草青青在线观看| 日韩电影在线观看完整免费观看| 久久免费精品视频| 蜜桃91麻豆精品一二三区| 一区二区三区精品久久久| 少妇欧美激情一区二区三区| 欧美日本亚洲韩国国产| 91精品久久香蕉国产线看观看| av在线网址观看| 日韩三级.com| 国产亚洲欧美久久久久| 播五月开心婷婷综合| 老太脱裤子让老头玩xxxxx| 欧美精品密入口播放| 欧美综合激情网| 福利在线观看| 欧美精品18+| 久久久久无码精品国产| 波多野结衣在线一区| 成人综合视频在线| 欧美老女人另类| 国产一区在线播放| 后进极品白嫩翘臀在线播放| 亚洲国产91精品在线观看| 中文字幕69页| 亚洲欧洲精品一区二区三区不卡| 91精品视频国产| 亚洲福利专区| 欧美一区二区福利| 婷婷成人av| 欧美日韩成人黄色| 青青免费在线视频| 欧美绝品在线观看成人午夜影视| 久久久久久久久久久久久女过产乱| 成人午夜电影久久影院| 青青青在线播放| 天天做天天爱天天爽综合网| 成人3d动漫一区二区三区91| 欧美a级在线观看| 俺去了亚洲欧美日韩| 欧美一级特黄aaaaaa大片在线观看| 狠狠做深爱婷婷久久综合一区| 超碰97av在线| 成人自拍视频在线| 三上悠亚av一区二区三区| 欧美特黄一级| 西游记1978| 欧美日韩夜夜| 国产一区二中文字幕在线看| av成人影院在线| 日韩在线观看高清| 奇米影视888狠狠狠777不卡| 日韩无一区二区| 波多野结衣一二区| 亚洲一区中文在线| 女人黄色一级片| 99精品国产热久久91蜜凸| 福利片一区二区三区| 一区二区三区导航| 性做爰过程免费播放| 久久av导航| 国产欧美日韩综合一区在线观看| 成人免费一区| 91精品国产色综合久久不卡98口| www红色一片_亚洲成a人片在线观看_| 精品亚洲一区二区三区在线播放| 国产视频aaa| 在线观看日韩高清av| 偷偷操不一样的久久| 亚洲欧美日韩一区| 欧日韩不卡视频| 国产亚洲福利社区一区| a天堂视频在线观看| 国产麻豆91精品| 污版视频在线观看| 日精品一区二区| 欧美,日韩,国产在线| 国产综合久久| 特级西西444| 99久久婷婷| 亚洲巨乳在线观看| 欧美最新另类人妖| 日韩免费三级| 免费精品国产| 美日韩精品免费| 亚洲三级网页| 久久九九视频| 色愁久久久久久| 久久精品成人一区二区三区蜜臀| 视频一区国产| 痴汉一区二区三区| 国产精品一站二站| 亚洲在线观看视频| 久久久久九九精品影院| 成人免费高清完整版在线观看| 久久婷婷五月综合色丁香| 国产精品普通话| 久久亚洲国产精品尤物| 国产精品视频在线观看| www.26天天久久天堂| 国产精品日韩专区| 伊人久久大香| 91精品婷婷国产综合久久蝌蚪| www.久久久.com| 亚洲综合精品伊人久久| 亚洲**毛片| 精品伊人久久大线蕉色首页| 免费萌白酱国产一区二区三区| 国产在线一区二区三区四区| 日韩在线你懂的| 日本不卡在线观看| 成人久久一区| 一道本在线观看视频| 欧美激情亚洲| 国产 日韩 亚洲 欧美| 久久电影一区| 成人黄色一级大片| 床上的激情91.| 黄色在线观看av| 国产精品网站在线| 综合五月激情网| 欧美日韩人人澡狠狠躁视频| 国产又粗又猛又爽又| 7777精品伊人久久久大香线蕉经典版下载| av官网在线观看| 亚洲激情成人网| melody高清在线观看| 欧美成人免费网| 中文字幕在线视频网站| 国产欧美日韩高清| www.成人网| 视频一区二区在线观看| 在线一区免费| 日韩视频在线免费看| 韩国一区二区三区| 欧美大喷水吹潮合集在线观看| 国产人成亚洲第一网站在线播放 | 伊人久久大香线蕉精品组织观看| 成人午夜免费在线视频| 久久男女视频| 69久久精品无码一区二区| 26uuu精品一区二区在线观看| 又色又爽的视频| 欧美日韩国产中文字幕| 怡春院在线视频| 日韩成人高清在线| 888av在线| 51精品国产黑色丝袜高跟鞋| 久久91视频| 欧美日韩精品免费看| 欧美一区影院| 色免费在线视频| 99re成人精品视频| 亚洲成人生活片| 欧美三级三级三级爽爽爽| 日本高清视频免费看| 日韩有码在线播放| 日韩伦理精品| 成人情视频高清免费观看电影| 最新亚洲精品| 国产精彩视频一区二区| 加勒比av一区二区| 成人片黄网站色大片免费毛片| 一区二区三区在线不卡| 曰批又黄又爽免费视频| 亚洲欧美激情一区| 草草影院在线| www.久久草| 久久久久久久久久久妇女| 成人在线观看a| 91丝袜美腿高跟国产极品老师| 欧美黄色一级网站| 欧美日韩国产经典色站一区二区三区| 亚洲av成人无码网天堂| 欧美日韩xxxxx| 久久在线观看| 日本三日本三级少妇三级66| 日本午夜精品视频在线观看 | 久久久久久久久丰满| 成人在线免费播放视频| 99re这里只有精品首页| 久久精品性爱视频| 日韩免费电影网站| caoporm免费视频在线| 成人黄色av播放免费| 日韩欧美午夜| 五月婷婷之综合激情| 国产三级欧美三级日产三级99| 91在线看视频| 亚洲激情中文字幕| 国产精品一二三产区| 国产欧美精品一区二区三区| 欧美日韩a区| 一区二区三区四区影院| 亚洲综合久久久久| 国产 欧美 自拍| 国模私拍视频一区| 美女av一区| 国产第一页视频| 日本一区免费视频| 一区二区的视频| 欧美精品在线免费播放| 日韩精品视频中文字幕| 国产人妻人伦精品| 成人精品免费看| www欧美在线| 亚洲丝袜在线视频| 久久亚洲精品中文字幕| 好吊色这里只有精品| 国产成人精品综合在线观看| 国产在线视频第一页| 日韩风俗一区 二区| 亚洲人成午夜免电影费观看| 日本高清不卡一区二区三| 麻豆精品视频在线观看| 粉嫩av性色av蜜臀av网站| 精品裸体舞一区二区三区| 欧洲一区精品| 亚洲欧美日韩另类精品一区二区三区| 久久66热re国产| 久久精品视频6| 日韩精品久久久久久福利| 欧美暴力调教| 午夜啪啪免费视频| www.av亚洲| 国产情侣呻吟对白高潮| 麻豆乱码国产一区二区三区| 精品三级av在线导航| 国产裸体舞一区二区三区| 国产精品久久午夜| 午夜精品久久久久久久91蜜桃| 欧美精品激情在线| 精品一区av| 97免费公开视频| 狠狠躁夜夜躁人人躁婷婷91 | 久久久久久成人精品| 欧美女王vk| 善良的小姨在线| 欧美性xxxxx| 免费黄色在线网站| 麻豆一区区三区四区产品精品蜜桃| 日本成人在线一区| 精品亚洲永久免费| 在线日韩欧美视频| 大奶在线精品| 天堂视频免费看| 大桥未久av一区二区三区| 日本视频在线观看| 鲁鲁狠狠狠7777一区二区| 经典一区二区三区| 无码人妻精品一区二区三区蜜桃91 | 三级黄色免费观看| 日韩av在线免费观看| 亚洲福利影视| 北条麻妃在线视频| 亚洲高清一区二区三区|