您好,登錄后才能下訂單哦!
Python語言有哪些特性?很多人可能不知道Python語言的特性,它們分別是列表操作、壓縮和枚舉、列表推導式、虛擬環境的使用和生成器。接下來為大家介紹這五個特性的作用和使用方法。
1、列表操作
Python允許使用反向索引,其中aList[-1] == aList[len(aList)-1] 。所以,我們可以通過調用aList[-2] 來獲取列表的倒數第二個元素。我們還能使用 aList[start:end:step] 語法來對列表進行切片,其中起始元素包含在內,終止元素不包含在內(即 [start,end) 步長為 step 的前閉后開區間)。因此,調用 aList[2:5] 會得到 [2, 3, 4]。我們也能通過調用 aList[::-1] 來反轉列表,這種技術非常優雅。此外,也可以將列表拆分成單獨的元素,或者使用星號將列表拆分成單個元素和子列表的混合形式。
a, b, c, d = aList[0:4]
print(f'a = {a}, b = {b}, c = {c}, d = aegqsqibtmh')
# a = 0, b = 1, c = 2, d = 3
a, *b, c, d = aList
print(f'a = {a}, b = {b}, c = {c}, d = aegqsqibtmh')
# a = 0, b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 9
2、壓縮和枚舉
Zip 函數會創建一個 迭代器,且該迭代器可以對來自多個列表的元素進行聚合。用它可以在 for 循環中對列表進行并行遍歷和排序。用星號對其進行解壓。
numList = [0, 1, 2]
engList = ['zero', 'one', 'two']
espList = ['cero', 'uno', 'dos']
print(list(zip(numList, engList, espList)))
# [(0, 'zero', 'cero'), (1, 'one', 'uno'), (2, 'two', 'dos')]
for num, eng, esp in zip(numList, engList, espList):
print(f'{num} is {eng} in English and {esp} in Spanish.')
# 0 is zero in English and cero in Spanish.
# 1 is one in English and uno in Spanish.
# 2 is two in English and dos in Spanish.
3、列表推導式
很多人認為,lambda、map和filter是初學者應該最先掌握的 Python“技巧”。雖然我也認為應關注這些功能,但由于它們缺乏靈活性。實際上,它們在大多數情況下并不是非常有用!Lambda是一種在1行中編寫一個一次性使用的函數的方法。一旦函數被多次調用,性能將受到影響。另一方面,map 可以將一個函數應用于列表中的所有元素,而 filter 能獲取集合中滿足用戶自定義條件的元素子集。
add_func = lambda z: z ** 2
is_odd = lambda z: z%2 == 1
multiply = lambda x,y: x*y
aList = list(range(10))
print(aList)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
列表推導式是一個簡潔而靈活的方法,它使用靈活的表達式和條件通過其他列表來創建新列表。它用方括號來構造,帶有一個表達式或函數,只有當列表中的元素滿足某個條件時,該表達式或函數才作用于列表中的每個元素。并且,它還能用嵌套來處理嵌套列表,并且這會比使用map和filter更靈活。
# Syntax of list comprehension
[ expression(x) for x in aList if optional_condition(x) ]
print(list(map(add_func, aList)))
print([x ** 2 for x in aList])
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(list(filter(is_odd, aList)))
print([x for x in aList if x%2 == 1])
# [1, 3, 5, 7, 9]
# [1, 3, 5, 7, 9]
4、虛擬環境的使用
如果在本文介紹的5個特性中只選一個,那么就是虛擬環境的使用,它。Python 應用程序通常會用各種不同的包,這些包可能是由具有復雜依賴關系的不同開發人員開發的。每個應用程序都會用特定的庫設置,使用其他庫的版本無法實現對某個應用程序安裝包的復制。所以,不存在滿足所有應用要求的單個安裝包。
conda create -n venv pip python=3.7 # select python version
source activate venv
...
source deactivate
5、生成器
當我們想要對一個大的結果集進行計算,但又不想為所有結果數據同時分配內存時,我們就可以使用生成器了。換句話說,它會動態地生成值,并且不會將先前的值存儲在內存中,因此我們只能對它們進行一次迭代操作。當讀取大文件或使用關鍵字 yield 生成無窮數列時,通常會用它,這樣一來就能極大提高工作效率。
def gen(n): # an infinite sequence generator that generates integers >= n
while True:
yield n
n += 1
G = gen(3) # starts at 3
print(next(G)) # 3
print(next(G)) # 4
print(next(G)) # 5
print(next(G)) # 6
關于Python語言的特性就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。