len()
len(iterable):返回給定序列(可迭代物件)的長度或元素個數。
list1 = [1, 2, 3, 4, 5]
print("列表長度:", len(list1))
issubclass()
issubclass(class, classinfo):檢查一個類是否是另一個類的子類,返回 True 或 False。
class Base:
pass
class Derived(Base):
pass
print(issubclass(Derived, Base)) # 輸出: True
abs()
返回一個數的絕對值。
print(abs(-5)) # 輸出: 5
round()
round(number, ndigits):返回浮點數 number 的四捨五入值,可以指定保留的小數位數 ndigits。
print(round(3.14159, 2)) # 輸出: 3.14
pow()
pow(x, y, z=None):計算 x 的 y 次方,如果提供 z 引數,則計算結果取模。(x**y) % z
print(pow(2, 3)) # 輸出: 8
print(pow(2, 3, 3)) # 輸出: 2
range()
range([start,] stop[, step]):成一個從 start 到 stop 的整數序列,間隔為 step。
for i in range(0, 5):
print(i) # 輸出: 0, 1, 2, 3, 4
divmod()
divmod(a, b):以元組 (a // b, a % b) 的形式返回兩個數的商和餘數。
print(divmod(8, 3)) # 輸出: (2, 2)
sum()
sum(iterable[, start]): 計算 iterable 的所有項的總和,如果提供了 start,則從這個值開始累加。
print(sum([1, 2, 3])) # 輸出: 6
print(sum([1, 2, 3], 10)) # 輸出: 16
sorted()
功能:sorted() 函式用於對可迭代物件進行排序,並返回一個新的已排序列表。
語法:sorted(iterable, key=None, reverse=False)
iterable:待排序的可迭代物件。
key:可選引數,用於指定排序的規則函式。
reverse:可選引數,為 True 時按降序排列,預設為 False。
# 基本排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 輸出: [1, 1, 2, 3, 4, 5, 6, 9]
# 按字串長度排序
words = ["banana", "apple", "cherry"]
sorted_words = sorted(words, key=len)
print(sorted_words) # 輸出: ['apple', 'banana', 'cherry']
# 逆序排序
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc) # 輸出: [9, 6, 5, 4, 3, 2, 1, 1]
# 使用 key 引數按絕對值排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers_abs = sorted(numbers, key=abs)
print("按絕對值排序:", sorted_numbers_abs)
reversed()
功能:reversed() 函式用於反轉序列中的元素,返回一個逆序的迭代器。
語法:reversed(sequence)
# 反轉列表
numbers = [1, 2, 3, 4, 5]
reversed_numbers = list(reversed(numbers))
print(reversed_numbers) # 輸出: [5, 4, 3, 2, 1]
# 反轉字串
hello = "hello"
reversed_hello = ''.join(reversed(hello))
print(reversed_hello) # 輸出: 'olleh'
enumerate()
功能:enumerate() 函式用於將可迭代物件組合為一個索引序列,同時列出資料和資料下標。
語法:enumerate(iterable, start=0)
iterable:待列舉的可迭代物件。
start:可選引數,指定下標起始值,預設為 0。
# 列舉列表
names = ["Alice", "Bob", "Charlie"]
for index, name in enumerate(names):
print(f"{index}: {name}")
# 輸出:
# 0: Alice
# 1: Bob
# 2: Charlie
# 從指定索引開始列舉
for index, name in enumerate(names, start=1):
print(f"{index}: {name}")
# 輸出:
# 1: Alice
# 2: Bob
# 3: Charlie
id()
id(object):返回物件的唯一識別符號,即物件在記憶體中的地址。每個物件在記憶體中都有一個唯一的識別符號。
# 使用 id() 獲取物件的記憶體地址
num = 10
print("物件 num 的記憶體地址:", id(num)) # 輸出: 物件 num 的記憶體地址: 140732046623816
hash()
hash(object):返回物件的雜湊值,如果物件是可雜湊的(即不可變的),則返回其雜湊值。雜湊值是一種用於快速比較物件的值是否相同的機制。
num = 10
hash_num = hash(num)
print("物件 num 的雜湊值:", hash_num) # 輸出: 物件 num 的雜湊值: 10
input()
input(prompt):從標準輸入(通常是鍵盤)獲取使用者輸入,並返回使用者輸入的字串。
name = input("請輸入你的名字:")
print("你好," + name + "!")
type()
type() 函式用於返回物件的型別。
其語法如下:
type(object)
object:要獲取其型別的物件
type(name, bases, dict, **kwds)
type() 函式返回物件的型別。如果只傳入一個引數,則返回該物件的型別;如果傳入三個引數,則返回一個新的型別物件。
# 獲取物件的型別
num = 10
print(type(num)) # <class 'int'>,num 是整數型別
# 獲取函式的型別
def greet():
print("Hello!")
print(type(greet)) # <class 'function'>,greet 是函式型別
# 獲取類的型別
class Person:
pass
print(type(Person)) # <class 'type'>,Person 是類型別
# 獲取例項的型別
class Dog:
pass
my_dog = Dog()
print(type(my_dog)) # <class '__main__.Dog'>,my_dog 是 Dog 類的例項
# 獲取型別的型別
print(type(int)) # <class 'type'>,int 是型別物件
print(type(str)) # <class 'type'>,str 是型別物件
# 使用三個引數建立新的型別物件
NewClass = type('NewClass', (object,), {'attr': 10})
print(type(NewClass)) # <class 'type'>,NewClass 是新的型別物件
# 返回字串物件的型別
string = "hello"
type_str = type(string)
print(type_str) # 輸出:<class 'str'>
# 返回列表物件的型別
list1 = [1, 2, 3]
type_list = type(list1)
print(type_list) # 輸出:<class 'list'>
# 隱式轉換
print(type(1+True)) # 輸出:<class 'int'>
print(type(1+True+2.0)) # 輸出:<class 'float'>
# 獲取自定義類的例項的型別
class MyClass:
pass
obj = MyClass()
print(type(obj)) # 輸出:<class '__main__.MyClass'>
isinstance()
isinstance() 是 Python 內建函式,用於檢查一個物件是否是指定類或型別中的一個。
其語法如下:
isinstance(object, classinfo)
object:要檢查的物件
classinfo:要檢查的類、型別或元組
如果 object 是 classinfo 類或型別的例項,或者是其子類的例項,則返回 True;否則返回 False。
# 檢查物件是否是指定類的例項
num = 10
print(isinstance(num, int)) # True,num 是整數型別
print(isinstance(num, str)) # False,num 不是字串型別
# 檢查物件是否是多個類或型別中的一個
num = 10
print(isinstance(num, (int, float))) # True,num 是整數或浮點數型別中的一個
print(isinstance(num, (str, float))) # False,num 不是字串或浮點數型別中的一個
# 結合繼承關係進行檢查
class Animal:
pass
class Dog(Animal):
pass
my_dog = Dog()
print(isinstance(my_dog, Animal)) # True,my_dog 是 Animal 類的例項
print(isinstance(my_dog, Dog)) # True,my_dog 是 Dog 類的例項
callable()
callable() 是 Python 內建函式,用於檢查物件是否可呼叫(callable)。可呼叫的物件包括函式、方法、類和某些類的例項等。
其語法如下:
callable(object)
object:要檢查的物件
如果 object 可以呼叫,則返回 True;否則返回 False。
# 檢查函式是否可呼叫
def greet():
print("Hello!")
print(callable(greet)) # True,函式 greet 可呼叫
# 檢查方法是否可呼叫
class Person:
def greet(self):
print("Hello!")
p = Person()
print(callable(p.greet)) # True,方法 greet 可呼叫
# 檢查類是否可呼叫
class Dog:
pass
print(callable(Dog)) # True,類 Dog 可呼叫,建立類例項
# 檢查例項是否可呼叫
class Calculator:
def calculate(self, x, y):
return x + y
c = Calculator()
print(callable(c.calculate)) # True,例項 c 的方法 calculate 可呼叫
# 檢查不可呼叫的物件
num = 10
print(callable(num)) # False,整數物件 num 不可呼叫
iter()
iter() 是 Python 內建函式,用於獲取可迭代物件的迭代器。
其語法如下:
iter(object, sentinel)
object:要建立迭代器的可迭代物件
sentinel:可選引數,指定在迭代器到達特定值時停止迭代
iter() 函式返回一個迭代器物件,該物件可以用於遍歷可迭代物件的元素。
# 獲取列表的迭代器
my_list = [1, 2, 3, 4, 5]
my_iter = iter(my_list)
print(next(my_iter)) # 1,獲取迭代器的下一個元素
print(next(my_iter)) # 2
print(next(my_iter)) # 3
# 獲取字串的迭代器
my_string = "Hello"
my_iter = iter(my_string)
print(next(my_iter)) # 'H',獲取迭代器的下一個字元
print(next(my_iter)) # 'e'
print(next(my_iter)) # 'l'
# 使用 sentinel 引數建立迭代器
def my_generator():
yield 1
yield 2
yield 3
gen_iter = iter(my_generator(), 2) # 當迭代器產生值為2時停止迭代
for value in gen_iter:
print(value) # 1,迭代器產生值為2時停止
# 迭代字典的鍵
my_dict = {'a': 1, 'b': 2, 'c': 3}
key_iter = iter(my_dict)
print(next(key_iter)) # 'a',獲取字典鍵的迭代器
print(next(key_iter)) # 'b'
print(next(key_iter)) # 'c'
hasattr()
hasattr() 是 Python 內建函式,用於檢查物件是否具有指定屬性。
其語法如下:
hasattr(object, name)
object:要檢查的物件
name:要檢查的屬性名稱
如果物件具有指定屬性,則返回 True;否則返回 False。
# 檢查物件是否具有屬性
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
print(hasattr(person, "name")) # True,person 物件具有屬性 "name"
print(hasattr(person, "gender")) # False,person 物件不具有屬性 "gender"
# 檢查模組是否具有屬性
import math
print(hasattr(math, "pi")) # True,math 模組具有屬性 "pi"
print(hasattr(math, "sin")) # True,math 模組具有屬性 "sin"
# 檢查內建型別是否具有屬性
print(hasattr(int, "bit_length")) # True,整數型別具有屬性 "bit_length"
print(hasattr(float, "real")) # True,浮點數型別具有屬性 "real"
# 檢查例項方法是否具有屬性
class Car:
def drive(self):
print("Driving the car")
car = Car()
print(hasattr(car.drive, "__call__")) # True,例項方法 "drive" 可呼叫
# 檢查字串是否具有屬性
my_string = "Hello"
print(hasattr(my_string, "upper")) # True,字串具有屬性 "upper"
print(hasattr(my_string, "split")) # True,字串具有屬性 "split"
getattr()
getattr() 是 Python 內建函式,用於獲取物件的屬性值。
其語法如下:
getattr(object, name, default)
object:要獲取屬性的物件
name:要獲取的屬性名稱
default:可選引數,如果屬性不存在,則返回預設值
如果物件具有指定屬性,則返回該屬性的值;如果屬性不存在且未提供預設值,則引發 AttributeError 異常。
# 獲取物件的屬性值
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
print(getattr(person, "name")) # 'Alice',獲取物件 person 的屬性 "name" 的值
print(getattr(person, "age")) # 30,獲取物件 person 的屬性 "age" 的值
# 獲取模組的屬性值
import math
print(getattr(math, "pi")) # 3.141592653589793,獲取 math 模組的屬性 "pi" 的值
print(getattr(math, "sin")) # <built-in function sin>,獲取 math 模組的屬性 "sin",為函式物件
# 提供預設值
class Person:
pass
person = Person()
print(getattr(person, "name", "Unknown")) # 'Unknown',屬性 "name" 不存在,返回預設值
# 處理不存在的屬性
class Person:
def __init__(self, name):
self.name = name
person = Person("Alice")
print(getattr(person, "age", None)) # None,屬性 "age" 不存在,返回 None
# 獲取內建型別的屬性值
print(getattr(str, "upper")) # <method 'upper' of 'str' objects>,獲取字串型別的屬性 "upper"
print(getattr(int, "bit_length")) # <method 'bit_length' of 'int' objects>,獲取整數型別的屬性 "bit_length"
issubclass()
issubclass() 是 Python 內建函式,用於檢查一個類是否是另一個類的子類。
其語法如下:
issubclass(class, classinfo)
class:要檢查的類
classinfo:要檢查的類或類的元組
如果 class 是 classinfo 類或其子類,則返回 True;否則返回 False。
# 檢查類是否是另一個類的子類
class Animal:
pass
class Dog(Animal):
pass
print(issubclass(Dog, Animal)) # True,Dog 是 Animal 的子類
# 檢查內建型別是否是指定型別的子類
print(issubclass(bool, int)) # True,布林型別是整數型別的子類
print(issubclass(float, int)) # False,浮點數型別不是整數型別的子類
# 檢查類是否是元組中任一類的子類
class Shape:
pass
class Circle(Shape):
pass
class Square(Shape):
pass
print(issubclass(Circle, (Shape, int))) # True,Circle 是 Shape 或 int 的子類
print(issubclass(Square, (Shape, int))) # False,Square 不是 Shape 或 int 的子類
# 檢查類是否是自身的子類
class Parent:
pass
class Child(Parent):
pass
print(issubclass(Child, Child)) # True,Child 是自身的子類
# 檢查內建型別是否是基本型別的子類
print(issubclass(str, object)) # True,字串型別是基本型別 object 的子類
print(issubclass(list, object)) # True,列表型別是基本型別 object 的子類
map()
map() 函式是Python內建的高階函式,用於對可迭代物件中的每個元素應用一個指定的函式,然後返回一個包含所有函式返回值的新的可迭代物件。
功能:map 函式是一個內建函式,它將一個函式應用於一個序列(比如列表、元組等)或迭代器的每個元素,並返回一個迭代器。使用 map 函式可以實現對序列中每個元素進行操作的目標,而無需顯式地編寫迴圈。這樣不僅程式碼更簡潔,而且提高了程式碼的可讀性和效率。
語法: map(function, iterable, *iterables)
function:要對每個元素應用的函式。
iterable:一個或多個可迭代物件,如列表、元組、集合等。map 將逐個從提供的序列中取出元素,並將它們作為引數傳遞給函式。
返回值:map 函式返回一個迭代器,迭代器中的元素是應用函式後的結果。
# 基礎示例
# 定義一個函式,用於計算數字的平方
def square(x):
return x * x
# 建立一個數字列表
numbers = [1, 2, 3, 4, 5]
# 使用 map 函式應用 square 函式到 numbers 的每個元素
squared = map(square, numbers)
# 將結果轉換為列表,並列印
print(list(squared)) # 輸出: [1, 4, 9, 16, 25]
# 多個序列
# 定義一個函式,用於計算兩個數的和
def add(x, y):
return x + y
# 建立兩個數字列表
a = [1, 2, 3]
b = [4, 5, 6]
# 使用 map 函式將兩個列表對應位置的元素相加
result = map(add, a, b)
print(list(result)) # 輸出: [5, 7, 9]
zip()
zip() 函式用於將多個可迭代物件中對應位置的元素打包成一個元組,然後返回一個包含這些元組的迭代器。
預設情況下,zip() 在最短的迭代完成後停止。較長可迭代物件中的剩餘項將被忽略,結果會裁切至最短可迭代物件的長度。
zip() 與 * 運算子相結合可以用來拆解一個列表。
zip()函式的語法如下:
zip(iterable1, iterable2, ...,strict=False)
iterable1, iterable2, ...:多個可迭代物件,可以是列表、元組、集合等。
strict:如果設定strict=True,則會在長度不匹配時引發ValueError異常。
# 將兩個列表中對應位置的元素打包成元組
list1 = [1, 2, 3]
list2 = ['d', 'e', 'f', 'g']
zipped = list(zip(list1, list2))
print(zipped) # 輸出:[(1, 'd'), (2, 'e'), (3, 'f')]
# 使用zip()函式同時遍歷多個列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for num, letter in zip(list1, list2):
print(num, letter)
# 輸出:
# 1 a
# 2 b
# 3 c
# 將字典的鍵和值分別打包成元組
my_dict = {'a': 1, 'b': 2, 'c': 3}
zipped = list(zip(my_dict.keys(), my_dict.values()))
print(zipped)
# 輸出:[('a', 1), ('b', 2), ('c', 3)]
# 使用zip()函式合併多個列表成為一個字典
keys = ['a', 'b', 'c']
values = [1, 2, 3]
my_dict = dict(zip(keys, values))
print(my_dict)
# 輸出:{'a': 1, 'b': 2, 'c': 3}
# 解壓縮元組列表
data = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*data)
print(numbers)
print(letters)
# 輸出:
# (1, 2, 3)
# ('a', 'b', 'c')
# 解壓縮字典的鍵和值
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys, values = zip(*my_dict.items())
print(keys)
print(values)
# 輸出:
# ('a', 'b', 'c')
# (1, 2, 3)
max()
用於從一組引數中返回最大值。這些引數可以是數字、字串或者可迭代物件(如列表、元組等)。
語法: max(arg1, arg2, *args, key=None, default=None)
引數:
arg1, arg2, *args: 用於比較大小的引數,可以是數字、字串或者可迭代物件。
key (可選): 用於指定一個函式,該函式將應用於每個引數以進行比較。
default (可選): 如果引數為空,則返回該預設值,否則引發 ValueError。
返回值:返回引數中的最大值。
# 作為獨立函式使用
max(3, 6, 1, 8, 4) # 輸出: 8
# 透過指定 key 函式來進行比較
words = ['apple', 'banana', 'cherry', 'dragonfruit']
max_word = max(words, key=len) # 輸出: 'dragonfruit'
chr()
描述:chr(i) 方法將一個 Unicode 編碼點轉換為對應的字元。
用法:chr(i) i 必須是一個整數,表示 Unicode 編碼點。
返回值:返回表示該編碼點的字元。
print(chr(65)) # 輸出: 'A'
print(chr(8364)) # 輸出: '€'
print(chr(128516)) # 輸出: '😄'
ord()
描述:用於返回表示給定字元的 Unicode 碼點的整數。該函式接受一個表示單個字元的字串作為引數,並返回該字元的 Unicode 碼點(整數)
用法:ord(character)。character 是要獲取 Unicode 碼點的字元(必須是長度為 1 的字串)。
返回值:返回表示給定字元的 Unicode 碼點的整數值。
print(ord('A')) # 輸出: 65
print(ord('€')) # 輸出: 8364
print(ord('😄')) # 輸出: 128516
isprintable()
描述:用於檢查字串是否包含可列印字元。即該字元是否在螢幕上可見,而不是控制字元或不可見字元。
返回值:如果一個字元是可列印的,isprintable()將返回True;否則,將返回False。
print('A'.isprintable()) # 輸出: True
print('€'.isprintable()) # 輸出: True
print('😄'.isprintable()) # 輸出: True
print('\n'.isprintable()) # 輸出: False
print('\t'.isprintable()) # 輸出: False
print('\r'.isprintable()) # 輸出: False
print(' '.isprintable()) # 輸出: True
print(''.isprintable()) # 輸出: True
print(chr(8).isprintable()) # ASCII. 輸出: False
print(chr(127).isprintable()) # ASCII. 輸出: False
iter()
功能:iter() 函式用於生成一個迭代器物件,返回一個迭代器,可用於逐個訪問某個可迭代物件的元素。
語法:iter(object, sentinel)
object:要轉換為迭代器的物件(如列表、元組、字典等)。
sentinel:可選引數,用於指定終止條件。如果提供了 sentinel 引數,object 必須是一個可呼叫的物件,在每次呼叫時返回結果直到等於 sentinel 為止,並且不會輸出哨兵值本身。
# 使用 iter() 獲取列表的迭代器
my_list = [1, 2, 3, 4]
my_iter = iter(my_list)
# 使用迭代器遍歷列表
for number in my_iter:
print(number)
# 輸出:
# 1
# 2
# 3
# 4
# 使用 iter() 建立一個以哨兵值停止的迭代器
import random
# 生成隨機數直到生成5為止
random_iter = iter(lambda: random.randint(1, 10), 5)
# 迭代並列印隨機數直到生成的數是5
for num in random_iter:
print(num)
# 輸出: 當 5 被生成時,迭代會立即終止,因此不會有機會列印 5。所以輸出將包括 1 到 10 之間的隨機數,但不包括 5。
next()
描述:next() 是 Python 中的一個內建函式,用於從迭代器中獲取下一個專案。如果迭代器已經耗盡(沒有更多的元素可供返回),則根據是否提供了預設值,next() 函式會丟擲一個 StopIteration 異常或返回一個指定的預設值。
用法:next(iterator, default=None)
iterator:要從中獲取元素的迭代器。
default(可選):如果迭代器耗盡(沒有更多元素可返回時),返回的預設值。如果未提供此引數且迭代器耗盡,則會丟擲 StopIteration。
# 在沒有預設值的情況下使用 next(),當迭代器耗盡時會丟擲 StopIteration 異常。
numbers = iter([1, 2, 3])
# 使用 next() 逐個獲取元素
print(next(numbers)) # 輸出 1
print(next(numbers)) # 輸出 2
print(next(numbers)) # 輸出 3
# 再次嘗試獲取元素將丟擲 StopIteration 異常
try:
print(next(numbers))
except StopIteration:
print("迭代器已耗盡")
# 使用預設值
# 建立一個簡單的迭代器
numbers = iter([1, 2, 3])
# 使用 next() 逐個獲取元素,提供預設值
print(next(numbers, '結束')) # 輸出 1
print(next(numbers, '結束')) # 輸出 2
print(next(numbers, '結束')) # 輸出 3
print(next(numbers, '結束')) # 輸出 '結束'(因為迭代器已耗盡)
# 在迴圈中使用 next()
# 建立一個迭代器
import random
random_iter = iter(lambda: random.randint(1, 10), 5)
# 迴圈使用 next(),直到迭代器耗盡
while True:
try:
number = next(random_iter)
print(number)
except StopIteration:
print("隨機數生成器達到哨兵值,迭代終止")
break
參考文件
https://docs.python.org/zh-cn/3.12/library/functions.html