最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Python排序的5種高級(jí)用法分享(含代碼)

2023-06-28 17:55 作者:深度之眼官方賬號(hào)  | 我要投稿

來源:投稿 作者:Fairy
編輯:學(xué)姐

排序是編程中常用的操作之一。Python提供了多種排序方法,可以適用于不同的排序需求。

那么,今天我們將介紹Python中常用的 5 種列表排序方法。

「1.使用sorted()函數(shù)和lambda表達(dá)式」

使用sorted()函數(shù)和lambda表達(dá)式進(jìn)行自定義排序:可以使用sorted()函數(shù)和lambda表達(dá)式來根據(jù)需要對(duì)列表、元組或字典等數(shù)據(jù)結(jié)構(gòu)進(jìn)行自定義排序。

首先,使用 sorted() 函數(shù)對(duì) my_list 進(jìn)行排序,并將排序后的結(jié)果賦值給變量 sorted_list。在 sorted() 函數(shù)中,使用 key 參數(shù)對(duì)排序依據(jù)進(jìn)行定義,這里使用 lambda 表達(dá)式創(chuàng)建了一個(gè)簡(jiǎn)單的匿名函數(shù),該函數(shù)接受一個(gè)參數(shù) x,并返回元組中的第一個(gè)元素 x[0]。因此,sorted() 函數(shù)根據(jù)元組的第一個(gè)元素進(jìn)行排序。

最后,打印出排好序的列表 sorted_list,最終結(jié)果如下:

「2.使用operator模塊」

這里需要先將operator模塊導(dǎo)入腳本中,可以使用其中的函數(shù)(如itemgetter(),attrgetter())對(duì)復(fù)雜的數(shù)據(jù)類型進(jìn)行排序。

首先,使用 items() 方法將字典轉(zhuǎn)換為元組列表,每個(gè)元組包含一個(gè)鍵和一個(gè)值。然后使用 sorted() 函數(shù)對(duì)該列表進(jìn)行排序。key 參數(shù)指定排序依據(jù),operator.itemgetter(1) 表示按照元組的第二個(gè)元素(即字典的值)進(jìn)行排序,reverse=True 表示進(jìn)行降序排序。排序后的結(jié)果是一個(gè)元組列表,每個(gè)元組包含排好序的鍵值對(duì)。

最后,使用 dict() 函數(shù)將排好序的元組列表轉(zhuǎn)換回字典格式,并將結(jié)果賦值給變量 sorted_dict。打印出 sorted_dict,最終結(jié)果如下:

「3.使用heapq模塊」

heapq是一個(gè)Python內(nèi)置模塊,提供了對(duì)堆的基本支持。它可以對(duì)可迭代對(duì)象進(jìn)行原地堆排序并返回一個(gè)排序后的列表。

使用 heapq.nsmallest() 函數(shù)可以從一個(gè)可迭代對(duì)象中,快速地找到其中的最小元素,同時(shí)可以指定要返回的最小元素個(gè)數(shù)。該函數(shù)接受兩個(gè)參數(shù):第一個(gè)參數(shù)是要返回的元素個(gè)數(shù)(即本例中的 3),第二個(gè)參數(shù)是一個(gè)可迭代對(duì)象(即本例中的列表 my_list)。

在本例中,我們將列表 my_list 傳遞給 heapq.nsmallest() 函數(shù),并請(qǐng)求找出前 3 個(gè)最小的數(shù)字。smallest_numbers 變量存儲(chǔ)了找到的最小數(shù)字,結(jié)果為 [1, 3, 4]。這些數(shù)字是按照升序排列的,符合預(yù)期的結(jié)果,最終結(jié)果如下:

「4.使用functools模塊」

在某些情況下,可能需要使用多個(gè)條件對(duì)數(shù)據(jù)進(jìn)行排序。可以使用functools模塊中的cmp_to_key()函數(shù)來實(shí)現(xiàn)這一點(diǎn)。

lambda 函數(shù)接受兩個(gè)參數(shù) x 和 y,分別表示要比較的元組。首先,它通過比較兩個(gè)元組的第一個(gè)元素進(jìn)行排序,即 x[0] - y[0];如果第一個(gè)元素相同,則再按照第二個(gè)元素降序排列,即 y[1] - x[1]。因?yàn)槟J(rèn)情況下 sorted 函數(shù)是升序排列,所以在第二個(gè)比較時(shí)需要對(duì)參數(shù)位置進(jìn)行反轉(zhuǎn)。

最后,使用 sorted() 函數(shù)對(duì) my_list 進(jìn)行排序,并將結(jié)果存儲(chǔ)在 sorted_list 變量中。打印輸出 sorted_list ,最終結(jié)果如下:

「5.使用numpy模塊」

numpy.sort(array)將按升序?qū)?shù)組進(jìn)行排序。

我們先創(chuàng)建了一個(gè)一維數(shù)組 my_array,然后調(diào)用 np.sort() 函數(shù)對(duì)該數(shù)組進(jìn)行升序排序。排序結(jié)果被存儲(chǔ)在 sorted_array 數(shù)組中。最后使用 print() 函數(shù)打印輸出 sorted_array ,最終結(jié)果如下:

推薦課程

《Python ·??AI&數(shù)據(jù)科學(xué)入門》

關(guān)注“學(xué)姐帶你玩AI”公眾號(hào)

回復(fù)“Python”了解課程詳情

Python排序的5種高級(jí)用法分享(含代碼)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
黄浦区| 加查县| 都昌县| 鄂州市| 茂名市| 新营市| 淅川县| 涪陵区| 广丰县| 孝义市| 筠连县| 南雄市| 仁布县| 溧水县| 洛宁县| 浮梁县| 青川县| 大足县| 盐津县| 西华县| 耒阳市| 红河县| 汾西县| 贡嘎县| 五常市| 磐石市| 瑞丽市| 安陆市| 新乡县| 望江县| 丹东市| 册亨县| 双鸭山市| 社旗县| 崇仁县| 华容县| 获嘉县| 民权县| 湘潭市| 通城县| 石楼县|