當下,Python 比以往的任何時候都更加流行,人們每天都在實踐著 Python 是多么的強大且易用,
我從事 Python 編程已經有幾年時間了,但是最近6個月才是全職的,下面列舉的這些事情,是我最開始使用 Python 的時候,就希望清楚的:
- 字串操作
- 串列推導
- Lambda 和 Map 函式
- 在一行里使用 if elif 和 else 條件判斷
- zip() 函式
這里注意:不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新python教程專案,還可以跟老司機交流討教!
字串操作
Python 非常擅長使用類似數學運算子 + 和 * 來操作字串
>>> my_string = "Hi Medium..!"
>>> print(my_string * 2)
Hi Medium..!Hi Medium..!
>>> print(my_string + " I love Python" * 2)
Hi Medium..! I love Python I love Python
復制代碼
我們也可以非常方便的對字串做取反操作,只需要使用 [::-1] 就可以,同時該操作還不僅僅局限于字串操作,
>>> print(my_string[::-1])
!..muideM iH
>>> my_list = [1,2,3,4,5]
>>> print(my_list[::-1])
[5, 4, 3, 2, 1]
復制代碼
那么對于包含多個字串的串列呢,我們甚至可以做一個 Yoda-translator !
>>> word_list = ["awesome", "is", "this"]
>>> print(' '.join(word_list[::-1]) + '!')
this is awesome!
復制代碼
在上面的代碼中,我們使用了 .join() 方法,用空格把反轉串列里的元素拼接了起來,并且增加了感嘆號,
串列推導
哦,天啊!一旦我知道了這些,我的整個世界都改變了(可能還沒有真實發生,但是已經接近了),這是以中國強大的、直觀的且可讀的方法來快速的操作串列,
假如我們有這樣一個函式,取一個數的平方再增加5
>>> def stupid_func(x):
>>> return x**2 + 5
復制代碼
現在如果我們要把該函式應用到一個串列的所有奇數當中,如果不了解串列推導式,你可能會這么寫
>>> my_list = [1, 2, 3, 4, 5]
>>> new_list = []
>>> for x in my_list:
>>> if x % 2 != 0:
>>> new_list.append(stupid_func(x))
>>> print(new_list)
[6, 14, 30]
復制代碼
但是我們還有更簡單的方法!
>>> my_list = [1, 2, 3, 4, 5]
>>> print([stupid_func(x) for x in my_list if x % 2 != 0])
[6, 14, 30]
復制代碼
串列推導適用于 [ expression for item in list ] 條件,同時如果那你想要應用一些布爾條件,例如上面獲取奇數的條件: [ expression for item in list if conditional ],那么它和下面的寫法是一致的
>>> for item in list:
>>> if conditional:
>>> expression
復制代碼
很酷,不過我們還可以做的更好,因為我們根本不需要函式“stupid_func”
>>> print([x ** 2 + 5 for x in my_list if x % 2 != 0])
[6, 14, 30]
復制代碼
Lambda 和 Map
Lambda
Lambda 有一點奇怪,但是就像我介紹的其他內容一樣,只要你去只用它,就會發現它是多么的強大和直觀,
Lambda 其實就是一個小的匿名函式,為什么要匿名呢?這是因為 Lambda 常常用來執行小型簡單的操作,而這些操作往往不需要使用 def my_function() 來定義正式的函式
我們還是以上面的例子為例,對一個數進行平方并加5,在上面的代碼中我們定義了一個函式 def stupid_func(x),現在讓我們使用 Lambda 來重新創建它
>>> stupid_func = (lambda x : x ** 2 + 5)
>>> print([stupid_func(1), stupid_func(3), stupid_func(5)])
[6, 14, 30]
復制代碼
那么,為什么要使用這種奇怪的語法呢?其實這種寫法的用處就體現在,我們不要定義實際的功能,就可以實作一些簡單的操作,我們繼續以數字串列為例,如果我們想對下面的串列進行排序,一種方法是使用 sorted()
>>> my_list = [2, 1, 0, -1, -2]
>>> print(sorted(my_list))
[-2, -1, 0, 1, 2]
復制代碼
這樣確實可以了,但是,如果我們想按照元素平方數的大小來排序,使用 Lambda 就非常方便了,可以使用 Lambda 來定義 sorted() 函式用于排序的 key
>>> print(sorted(my_list, key = lambda x : x ** 2))
[0, -1, 1, -2, 2]
復制代碼
Map
Map 是一個用來將函式應用到序列的每個元素上,比如串列,假設我們必須要列出兩個串列對應位置元素的乘積,那么該怎么做呢,可以使用 Lambda 和 Map
>>> print(list(map(lambda x, y : x * y, [1, 2, 3], [4, 5, 6])))
[4, 10, 18]
復制代碼
和下面的代碼相比,Lambda 與 Map 的組合實在是太優雅了
>>> x, y = [1, 2, 3], [4, 5, 6]
>>> z = []
>>> for i in range(len(x)):
>>> z.append(x[i] * y[i])
>>> print(z)
[4, 10, 18]
復制代碼
在一行里使用 if elif 和 else 條件判斷
有時,你可能會寫出如下的代碼
>>> x = int(input())
>>> if x >= 10:
>>> print("Horse")
>>> elif 1 < x < 10:
>>> print("Duck")
>>> else:
>>> print("Baguette")
復制代碼
運行此命令時,系統會提示你從 input() 函式輸入內容,假設我們輸入5,我們將得到 Duck, 但是我們也可以像下面這樣寫
print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")
復制代碼
這實在是太簡單了!快去閱讀你的舊代碼,你會發現有太多的地方可以將這種簡單的 if else 判斷替換成這種單行判斷,
zip()
還記得在 Map 函式部分,我們并行處理兩個串列的例子嘛,使用 zip() 會更加簡單
假如我們有兩個串列,一個包含名字,一個包含姓氏,怎樣才能很好的合并它們呢,使用 zip()!
>>> first_names = ["Peter", "Christian", "Klaus"]
>>> last_names = ["Jensen", "Smith", "Nistrup"]
>>> print([' '.join(x) for x in zip(first_names, last_names)])
['Peter Jensen', 'Christian Smith', 'Klaus Nistrup']
復制代碼
哇哦,有個地方錯了,我的名字不叫 Peter Jensen,那么就可以調整如下
>>> print([' '.join(x) for x in zip(first_names, last_names[::-1])])
['Peter Nistrup', 'Christian Smith', 'Klaus Jensen']
復制代碼
結束語
我這里只是匯總了一個簡單的清單,另外大家要注意:不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新python教程專案,還可以跟老司機交流討教!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/154820.html
標籤:Python
上一篇:集合類List底層資料結構總結
