欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python序列排序的具體場景實(shí)現(xiàn)

 更新時間:2025年01月16日 10:17:55   作者:Python熱愛者  
本文主要介紹了Python序列排序的具體場景實(shí)現(xiàn),主要介紹了內(nèi)置的sort()方法或者全局的sorted()方法著兩種方法,具有一定的參考價值,感興趣的可以了解一下

python中,一般在涉及到列表排序時,都用內(nèi)置的sort()方法或者全局的sorted()方法,區(qū)別如下:

1、sort()方法只能用于列表排序,不能用于字符串,字典等其他可迭代序列;sorted()方法可以用于所有的可迭代序列;

2、sort()方法是在原列表基礎(chǔ)上進(jìn)行排序,返回None,會破壞原始列表結(jié)構(gòu);sorted()方法是返回一個排序后的新序列,對原始列表無影響;

#sort()排序
>>> a=[6,9,8,4,3,1,2]
>>> b=a.sort()
>>> print(b)
None
>>> print(a)
[1, 2, 3, 4, 6, 8, 9]

#sorted()排序
>>> a=[6,9,8,4,3,1,2]
>>> b=sorted(a)
>>> print(b)
[1, 2, 3, 4, 6, 8, 9]
>>> print(a)
[6, 9, 8, 4, 3, 1, 2]

字典排序時,sorted()方法默認(rèn)是按照字典的鍵(key)排序的,如下:

>>> a={5:'A',1:'E',4:'B',2:'D',3:'C'}
>>> b=sorted(a)
>>> print(b)
[1, 2, 3, 4, 5]

如果需要按照字典的value排序,可以用下面的方法:

>>> a={5:'A',1:'E',4:'B',2:'D',3:'C'}
>>> b=sorted(a.items(), key=lambda item:item[1])
>>> print(b)
[(5, 'A'), (4, 'B'), (3, 'C'), (2, 'D'), (1, 'E')]

高級用法

sort()方法和sorted()方法都可以指定參數(shù)來處理一些復(fù)雜場景的排序

1、key參數(shù):指定一個函數(shù),可以是內(nèi)置函數(shù),也可以是自己定義的函數(shù),此函數(shù)將在每個元素比較前被調(diào)用。

2、reverse參數(shù):此參數(shù)指定True or False,來進(jìn)行降序或者升序,默認(rèn)為False(升序)。

如下:

a = ["This", "A", "is", "bag"]
b = sorted(a, key=str.lower)
c = sorted(a, key=str.lower, reverse=True)
print(b)
print(c)

['A', 'bag', 'is', 'This']
['This', 'is', 'bag', 'A']

更廣泛的使用情況是用復(fù)雜對象的某些值來對復(fù)雜對象的序列排序,例如:

一個列表保存著每個學(xué)生的姓名,檔次和分?jǐn)?shù)

#學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流群:531509025
student_tuples = [
    ('john', 'A', 96),
    ('leky', 'D', 63),
    ('andy', 'A', 92),
    ('jane', 'B', 82),
    ('dave', 'B', 85),
    ('cany', 'A', 96)
]

場景1、按檔次從高到低進(jìn)行排序

student_tuples = [
    ('john', 'A', 96),
    ('leky', 'D', 63),
    ('andy', 'A', 92),
    ('jane', 'B', 82),
    ('dave', 'B', 85),
    ('cany', 'A', 96)
]
print(sorted(student_tuples, key=lambda student: student[1]))

[('john', 'A', 96), ('andy', 'A', 92), ('cany', 'A', 96), ('jane', 'B', 82), ('dave', 'B', 85), ('leky', 'D', 63)]

場景2、按分?jǐn)?shù)從高到低排序

方法(1)、使用reverse參數(shù)

student_tuples = [
    ('john', 'A', 96),
    ('leky', 'D', 63),
    ('andy', 'A', 92),
    ('jane', 'B', 82),
    ('dave', 'B', 85),
    ('cany', 'A', 96),
]
print(sorted(student_tuples, key=lambda student: student[2], reverse=True))

[('john', 'A', 96), ('cany', 'A', 96), ('andy', 'A', 92), ('dave', 'B', 85), ('jane', 'B', 82), ('leky', 'D', 63)]

方法(2)、使用負(fù)號(-)

student_tuples = [
    ('john', 'A', 96),
    ('leky', 'D', 63),
    ('andy', 'A', 92),
    ('jane', 'B', 82),
    ('dave', 'B', 85),
    ('cany', 'A', 96),
]
print(sorted(student_tuples, key=lambda student: -student[2]))

[('john', 'A', 96), ('cany', 'A', 96), ('andy', 'A', 92), ('dave', 'B', 85), ('jane', 'B', 82), ('leky', 'D', 63)]

注意:負(fù)號(-)只能用于數(shù)字前面,不能用于字符串前面

場景3、按檔次從高到低進(jìn)行排序,檔次相同的按分?jǐn)?shù)從高到底排序

student_tuples = [
    ('john', 'A', 96),
    ('leky', 'D', 63),
    ('andy', 'A', 92),
    ('jane', 'B', 82),
    ('dave', 'B', 85),
    ('cany', 'A', 96)
]
print(sorted(student_tuples, key=lambda student: [student[1], -student[2]]))

[('john', 'A', 96), ('cany', 'A', 96), ('andy', 'A', 92), ('dave', 'B', 85), ('jane', 'B', 82), ('leky', 'D', 63)]

場景4、按檔次從低到高進(jìn)行排序,檔次相同的按分?jǐn)?shù)從低到高排序

student_tuples = [
    ('john', 'A', 96),
    ('leky', 'D', 63),
    ('andy', 'A', 92),
    ('jane', 'B', 82),
    ('dave', 'B', 85),
    ('cany', 'A', 96)
]
print(sorted(student_tuples, key=lambda student: [student[1], -student[2]],reverse=True))

[('leky', 'D', 63), ('jane', 'B', 82), ('dave', 'B', 85), ('andy', 'A', 92), ('john', 'A', 96), ('cany', 'A', 96)]

場景5、按檔次從低到高進(jìn)行排序,檔次相同的按分?jǐn)?shù)從低到高排序,最后再按照姓名升序

姓名是字符串,不能在字符串前面用“符號(-)”來排序,可以重寫“富比較”方法

#學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流群:531509025
class Reversinator(object):
    def __init__(self, obj):
        self.obj = obj

    def __lt__(self, other):
        return other.obj < self.obj


student_tuples = [
    ('john', 'A', 96),
    ('leky', 'D', 63),
    ('andy', 'A', 92),
    ('jane', 'B', 82),
    ('dave', 'B', 85),
    ('cany', 'A', 96),
]

print(sorted(student_tuples, key=lambda student: [student[1], -student[2], Reversinator(student[0])], reverse=True))

[('leky', 'D', 63), ('jane', 'B', 82), ('dave', 'B', 85), ('andy', 'A', 92), ('cany', 'A', 96), ('john', 'A', 96)]

到此這篇關(guān)于Python序列排序的具體場景實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python序列排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例

    jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例

    這篇文章主要介紹了jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python下調(diào)用Linux的Shell命令的方法

    Python下調(diào)用Linux的Shell命令的方法

    有時候難免需要直接調(diào)用Shell命令來完成一些比較簡單的操作,這篇文章主要介紹了Python下調(diào)用Linux的Shell命令的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Python?遺傳算法處理TSP問題詳解

    Python?遺傳算法處理TSP問題詳解

    遺傳算法(Genetic?Algorithm,?GA)是模擬達(dá)爾文生物進(jìn)化論的自然選擇和遺傳學(xué)機(jī)理的生物進(jìn)化過程的計算模型,是一種通過模擬自然進(jìn)化過程搜索最優(yōu)解的方法
    2022-11-11
  • python中os和sys模塊的區(qū)別與常用方法總結(jié)

    python中os和sys模塊的區(qū)別與常用方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于python中os和sys模塊的區(qū)別與常用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Tensorflow使用Anaconda、pycharm安裝記錄

    Tensorflow使用Anaconda、pycharm安裝記錄

    這篇文章主要介紹了Tensorflow使用Anaconda、pycharm安裝記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python用tkinter實(shí)現(xiàn)一個gui的翻譯工具

    python用tkinter實(shí)現(xiàn)一個gui的翻譯工具

    這篇文章主要介紹了python用tkinter實(shí)現(xiàn)一個gui的翻譯工具,幫助大家更好的理解和使用python,感興趣的朋友可以了解下 +
    2020-10-10
  • Python對Tornado請求與響應(yīng)的數(shù)據(jù)處理

    Python對Tornado請求與響應(yīng)的數(shù)據(jù)處理

    這篇文章主要介紹了Python對Tornado請求與響應(yīng)的數(shù)據(jù)處理,需要的朋友可以參考下
    2020-02-02
  • 簡單介紹Python的Django框架的dj-scaffold項(xiàng)目

    簡單介紹Python的Django框架的dj-scaffold項(xiàng)目

    這篇文章主要介紹了簡單介紹Python的Django框架的dj-scaffold項(xiàng)目,用于輔助Django框架的目錄設(shè)置,需要的朋友可以參考下
    2015-05-05
  • Python自動化辦公之圖片轉(zhuǎn)PDF的實(shí)現(xiàn)

    Python自動化辦公之圖片轉(zhuǎn)PDF的實(shí)現(xiàn)

    實(shí)現(xiàn)圖片轉(zhuǎn)換成PDF文檔的操作方法有很多,綜合對比以后感覺fpdf這個模塊用起來比較方便而且代碼量相當(dāng)少。所以本文將利用Python語言實(shí)現(xiàn)圖片轉(zhuǎn)PDF,感興趣的可以了解一下
    2022-04-04
  • tensorflow模型的save與restore,及checkpoint中讀取變量方式

    tensorflow模型的save與restore,及checkpoint中讀取變量方式

    這篇文章主要介紹了tensorflow模型的save與restore,及checkpoint中讀取變量方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05

最新評論