Python中,sort()是列表對象的內(nèi)置方法,用于原地排序,直接修改原列表,不返回新列表。其語法為list.sort(key=None, reverse=False),其中key指定排序規(guī)則,如按字符串長度、對象屬性等,reverse控制升序(默認(rèn))或降序,跟著小編一起詳細(xì)了解下相關(guān)步驟。
python中sort函數(shù)怎么用?
在Python中,sort() 是列表(list)對象的內(nèi)置方法,用于原地排序(直接修改原列表,不返回新列表)。以下是詳細(xì)用法和示例:
基本語法
pythonlist.sort(key=None, reverse=False)
key(可選):指定排序規(guī)則的函數(shù),默認(rèn)為None(按元素自然順序排序)。
reverse(可選):若為True,則降序排序;默認(rèn)為False(升序)。
示例代碼
1. 默認(rèn)排序(升序)
pythonnumbers = [3, 1, 4, 1, 5, 9, 2]numbers.sort()print(numbers) # 輸出: [1, 1, 2, 3, 4, 5, 9]
2. 降序排序
pythonnumbers.sort(reverse=True)print(numbers) # 輸出: [9, 5, 4, 3, 2, 1, 1]
3. 通過key自定義排序規(guī)則
按字符串長度排序:
pythonwords = ["apple", "banana", "cherry", "date"]words.sort(key=lambda x: len(x))print(words) # 輸出: ['date', 'apple', 'banana', 'cherry']
按對象的某個(gè)屬性排序:
pythonstudents = [{"name": "Alice", "age": 25},{"name": "Bob", "age": 20},{"name": "Charlie", "age": 22}]students.sort(key=lambda x: x["age"])print(students)# 輸出: [{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}, {'name': 'Alice', 'age': 25}]
4. 注意:sort()是原地操作
pythona = [3, 1, 2]b = a.sort() # 錯(cuò)誤!sort()返回None,b將為Noneprint(a) # 輸出: [1, 2, 3]print(b) # 輸出: None
與sorted()函數(shù)的區(qū)別
list.sort():原地修改列表,返回None。
sorted(list):返回新列表,原列表不變。
pythonoriginal = [3, 1, 2]new_list = sorted(original)print(original) # 輸出: [3, 1, 2](原列表未變)print(new_list) # 輸出: [1, 2, 3]
python分?jǐn)?shù)怎么輸入?
一、使用fractions模塊
Python內(nèi)置的fractions模塊提供了一個(gè)Fraction類,用于表示有理數(shù)??梢允褂眠@個(gè)模塊輕松地輸入和處理分?jǐn)?shù)。
1. 導(dǎo)入fractions模塊
首先,需要導(dǎo)入fractions模塊:
from fractions import Fraction
2. 創(chuàng)建分?jǐn)?shù)對象
可以通過傳遞字符串或兩個(gè)整數(shù)來創(chuàng)建分?jǐn)?shù)對象:
# 通過字符串
fraction1 = Fraction('3/4')
通過兩個(gè)整數(shù)
fraction2 = Fraction(3, 4)
3. 操作分?jǐn)?shù)
Fraction類支持基本的算術(shù)操作,包括加、減、乘、除:
# 加法
result_add = fraction1 + fraction2
減法
result_sub = fraction1 - fraction2
乘法
result_mul = fraction1 * fraction2
除法
result_div = fraction1 / fraction2
二、通過字符串解析
在某些情況下,可能需要從用戶輸入或其他來源解析字符串來創(chuàng)建分?jǐn)?shù)。
1. 使用input函數(shù)獲取用戶輸入
可以使用input函數(shù)獲取用戶輸入的分?jǐn)?shù):
user_input = input("請輸入一個(gè)分?jǐn)?shù)(如3/4):")
fraction = Fraction(user_input)
2. 解析并驗(yàn)證輸入
在解析用戶輸入時(shí),建議進(jìn)行驗(yàn)證,以確保輸入格式正確:
def parse_fraction(input_str):
try:
return Fraction(input_str)
except ValueError:
print("輸入格式錯(cuò)誤,請輸入正確的分?jǐn)?shù)格式,如'3/4'")
return None
user_input = input("請輸入一個(gè)分?jǐn)?shù)(如3/4):")
fraction = parse_fraction(user_input)
三、手動(dòng)輸入數(shù)值
有時(shí)你可能希望直接使用浮點(diǎn)數(shù)或小數(shù)來表示分?jǐn)?shù)。
1. 使用浮點(diǎn)數(shù)
可以將浮點(diǎn)數(shù)轉(zhuǎn)換為分?jǐn)?shù):
decimal_number = 0.75
fraction = Fraction(decimal_number).limit_denominator()
2. 手動(dòng)輸入分子和分母
可以直接輸入分子和分母來創(chuàng)建分?jǐn)?shù):
numerator = int(input("請輸入分子:"))
denominator = int(input("請輸入分母:"))
fraction = Fraction(numerator, denominator)
四、處理分?jǐn)?shù)的其他技巧
1. 約簡分?jǐn)?shù)
Fraction類會(huì)自動(dòng)約簡分?jǐn)?shù)。如果需要手動(dòng)約簡分?jǐn)?shù),可以使用limit_denominator方法:
fraction = Fraction(8, 12)
simplified_fraction = fraction.limit_denominator()
2. 比較分?jǐn)?shù)
可以使用標(biāo)準(zhǔn)比較運(yùn)算符來比較兩個(gè)分?jǐn)?shù):
fraction1 = Fraction(1, 2)
fraction2 = Fraction(3, 4)
if fraction1 < fraction2:
print(f"{fraction1} 小于 {fraction2}")
else:
print(f"{fraction1} 大于或等于 {fraction2}")
3. 轉(zhuǎn)換為小數(shù)
可以將分?jǐn)?shù)轉(zhuǎn)換為浮點(diǎn)數(shù):
fraction = Fraction(3, 4)
decimal_value = float(fraction)
sort()適合直接修改原列表的場景,若需保留原列表,應(yīng)使用sorted()函數(shù)生成新列表。通過key參數(shù)可靈活定義排序邏輯。注意sort()返回None,避免誤賦值。合理選擇排序方法能提升代碼效率和可讀性。