您好,登錄后才能下訂單哦!
Python語言有哪些特性?很多人可能不知道Python語言的特性,它們分別是列表操作、壓縮和枚舉、列表推導(dǎo)式、虛擬環(huán)境的使用和生成器。接下來為大家介紹這五個特性的作用和使用方法。
1、列表操作
Python允許使用反向索引,其中aList[-1] == aList[len(aList)-1] 。所以,我們可以通過調(diào)用aList[-2] 來獲取列表的倒數(shù)第二個元素。我們還能使用 aList[start:end:step] 語法來對列表進(jìn)行切片,其中起始元素包含在內(nèi),終止元素不包含在內(nèi)(即 [start,end) 步長為 step 的前閉后開區(qū)間)。因此,調(diào)用 aList[2:5] 會得到 [2, 3, 4]。我們也能通過調(diào)用 aList[::-1] 來反轉(zhuǎn)列表,這種技術(shù)非常優(yōu)雅。此外,也可以將列表拆分成單獨的元素,或者使用星號將列表拆分成單個元素和子列表的混合形式。
a, b, c, d = aList[0:4]
print(f'a = {a}, b = , c = {c}, d = cu6l5pm')
# a = 0, b = 1, c = 2, d = 3
a, *b, c, d = aList
print(f'a = {a}, b = , c = {c}, d = q5qu0h5')
# a = 0, b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 9
2、壓縮和枚舉
Zip 函數(shù)會創(chuàng)建一個 迭代器,且該迭代器可以對來自多個列表的元素進(jìn)行聚合。用它可以在 for 循環(huán)中對列表進(jìn)行并行遍歷和排序。用星號對其進(jìn)行解壓。
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、列表推導(dǎo)式
很多人認(rèn)為,lambda、map和filter是初學(xué)者應(yīng)該最先掌握的 Python“技巧”。雖然我也認(rèn)為應(yīng)關(guān)注這些功能,但由于它們?nèi)狈`活性。實際上,它們在大多數(shù)情況下并不是非常有用!Lambda是一種在1行中編寫一個一次性使用的函數(shù)的方法。一旦函數(shù)被多次調(diào)用,性能將受到影響。另一方面,map 可以將一個函數(shù)應(yīng)用于列表中的所有元素,而 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]
列表推導(dǎo)式是一個簡潔而靈活的方法,它使用靈活的表達(dá)式和條件通過其他列表來創(chuàng)建新列表。它用方括號來構(gòu)造,帶有一個表達(dá)式或函數(shù),只有當(dāng)列表中的元素滿足某個條件時,該表達(dá)式或函數(shù)才作用于列表中的每個元素。并且,它還能用嵌套來處理嵌套列表,并且這會比使用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、虛擬環(huán)境的使用
如果在本文介紹的5個特性中只選一個,那么就是虛擬環(huán)境的使用,它。Python 應(yīng)用程序通常會用各種不同的包,這些包可能是由具有復(fù)雜依賴關(guān)系的不同開發(fā)人員開發(fā)的。每個應(yīng)用程序都會用特定的庫設(shè)置,使用其他庫的版本無法實現(xiàn)對某個應(yīng)用程序安裝包的復(fù)制。所以,不存在滿足所有應(yīng)用要求的單個安裝包。
conda create -n venv pip python=3.7 # select python version
source activate venv
...
source deactivate
5、生成器
當(dāng)我們想要對一個大的結(jié)果集進(jìn)行計算,但又不想為所有結(jié)果數(shù)據(jù)同時分配內(nèi)存時,我們就可以使用生成器了。換句話說,它會動態(tài)地生成值,并且不會將先前的值存儲在內(nèi)存中,因此我們只能對它們進(jìn)行一次迭代操作。當(dāng)讀取大文件或使用關(guān)鍵字 yield 生成無窮數(shù)列時,通常會用它,這樣一來就能極大提高工作效率。
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
關(guān)于Python語言的特性就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。