国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現(xiàn)按學(xué)生年齡排序的實際問題詳解

2020-02-16 02:09:26
字體:
供稿:網(wǎng)友

前言

本文主要給大家了關(guān)于利用Python按學(xué)生年齡排序的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

問題:定義一個Class:包含姓名name、性別gender、年齡age,需要按年齡給學(xué)生排序。

輸入:包含學(xué)生對象的List。

輸出:按照年齡age進行排序好的List。

思路1:使用冒泡排序,比較相鄰的學(xué)生,如果第一個學(xué)生的age值比第二個學(xué)生的age值大,那么就整體交換這兩個元素。持續(xù)每次對越來越少的元素重復(fù)上面的步驟。一直到?jīng)]有任何一對學(xué)生需要比較。

思路2:使用Python內(nèi)建方法sorted()。

(這個問題其實是筆者面試時候手寫的一個實際問題,比較面向小白,我們可以通過這樣一個簡單的問題復(fù)習(xí)Python的一些基礎(chǔ)知識點)

1. 前期準(zhǔn)備

1.1 定義Class

class Student(object): def __init__(self, name, gender, age): self.__name = name self.__gender = gender self.__age = age  # 取得age屬性 def getAge(self): return self.__age  # 打印 def printStudent(self): return self.__name, self.__gender, self.__age

1.2 生成包含隨機學(xué)生對象的List

# 生成包含隨機學(xué)生對象的listdef generateStudent(num): # num為需要生成的測試對象數(shù) list = [] for i in range(num): randName = ''.join(random.sample(string.ascii_letters, 4)) randGender = random.choice(['Male', 'FeMale']) randAge = random.randint(10,30) s = Student(randName, randGender, randAge) list.append(s) return list

2. 開始排序

2.1 使用冒泡排序

思路已在開頭介紹,我們直接來看代碼:

def sortStudent(list): for i in range(len(list)): for j in range(1, len(list)-i):  if list[j-1].getAge() > list[j].getAge():  list[j-1], list[j] = list[j], list[j-1] return list

2.2 使用Python內(nèi)建方法sorted

配合lambda表達(dá)式使用,非常簡潔,代碼如下:

sorted(list, key=lambda student: student.getAge()) # 將對象的age屬性作為排序的Key

我們在這里補充一下 sorted() 和 lambda表達(dá)式 的相關(guān)知識點:

2.2.1 sorted(iterable, *, key=None, reverse=False)

官方文檔

關(guān)于參數(shù)的說明:

key specifies a function of one argument that is used to extract a comparison key from each list element: key=str.lower. The default value is None (compare the elements directly).
reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.

key里接收的可以是某一個指定的函數(shù)(如lambda函數(shù))返回的一個值,作為指定的比較依據(jù)。 reverse默認(rèn)是False從小到大排序,設(shè)置為True后可以從大到小。

關(guān)于穩(wěn)定性的說明:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长丰县| 徐闻县| 福贡县| 平和县| 南乐县| 霍邱县| 克山县| 长海县| 五常市| 盐山县| 辛集市| 拜城县| 朔州市| 祁门县| 梧州市| 敖汉旗| 丰原市| 宿松县| 增城市| 神池县| 台州市| 揭西县| 营山县| 泽州县| 桑日县| 土默特右旗| 湄潭县| 大丰市| 西青区| 武胜县| 汪清县| 福清市| 佳木斯市| 财经| 赤壁市| 崇义县| 奇台县| 车险| 隆回县| 剑阁县| 阿图什市|