每個新手程式員都應該知道的Python技巧

来源:https://www.cnblogs.com/chengxuyuanaa/archive/2020/04/22/12745437.html
-Advertisement-
Play Games

當下,Python 比以往的任何時候都更加流行,人們每天都在實踐著 Python 是多麼的強大且易用。 我從事 Python 編程已經有幾年時間了,但是最近6個月才是全職的。下麵列舉的這些事情,是我最開始使用 Python 的時候,就希望清楚的: 字元串操作 列表推導 Lambda 和 Map 函數 ...


當下,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教程項目,還可以跟老司機交流討教!

本文的文字及圖片來源於網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背景 kafka如何支撐海量消息的集中寫入? 答案就是消息分區。 核心思想是:負載均衡,採用合適的分區策略把消息寫到不同的broker上的分區中; 其它的產品中有類似的思想。 比如monogodb, es 裡面叫做 shard; hbase叫region, cassdra叫vnode; 消息的三層結 ...
  • redis 提供了 和`aof`兩種持久化機制, + 預設開啟, 預設關閉。 當兩種持久化機制都開啟時, redis 重啟恢複數據時載入 持久化的 appendonly.aof rdb dump.rdb` 文件不會被載入到記憶體中。 開啟rdb,關閉aof 通過==redis cli== 這種方式停掉 ...
  • 列表生成式 列表生成式是 python 內置的非常強大的可以用來生成列表的生成式。在學習生成器之前先來瞭解一下列表生成式,者有利於我們隊生成器的理解。 列表生成式的語法格式如下 [exp for iter_var in iterable if_exp]另外要註意:不管你是為了Python就業還是興趣 ...
  • 我的LeetCode:https://leetcode cn.com/u/ituring/ 我的LeetCode刷題源碼[GitHub]:https://github.com/izhoujie/Algorithmcii LeetCode 199. 二叉樹的右視圖 題目 給定一棵二叉樹,想象自己站在它 ...
  • 內置函數 內置函數就是python給你提供的, 拿來直接用的函數, 比如print., input等. 截止到python版本3.6.2 python一共提供了68個內置函數. #68個內置函數 # abs() dict() help() min() setattr() # all() dir() ...
  • 很多時候我們自己編寫一個類,在將它的實例在終端上列印或查看的時候,我們往往會看到一個不太滿意的結果。所以,我們可能會手動列印對象的一些屬性或者是在類里自己實現一個方法來返回我們需要的信息。 使用__str__方法實現類到字元串的轉化 class Car: def __init__(self, col ...
  • 本文講解了單文件,多文件上傳,然後對文件的上傳限制條件與訪問添加了一些配置。 ...
  • `@SessionAttributes` 註解只用作用在 類 上,作用是將指定的 Model 的鍵值對保存在 session 中。可以讓其他請求共用 session 中的鍵值對。 指定保存的屬性名 作用是將 Model 中指定 屬性名 的鍵值對保存在 session 中。 下麵的代碼中, 請求將 M ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...