Python 中 4 個高效的技巧(建議收藏)

今天我想和大家分享 4 個省時的 Python 技巧,可以節省 10~20% 的 Python 執行時間。

反轉列表

Python 中通常有兩種反轉列表的方法:切片或 reverse() 函數調用。這兩種方法都可以反轉列表,但需要注意的是內置函數 reverse() 會更改原始列表,而切片方法會創建一個新列表。

但是他們的表現呢?哪種方式更有效?讓我們看一下下面的例子:

使用切片:

$ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist[::-1]'
1000000 loops, best of 5: 15.6 usec per loop

使用 reverse():

$ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist.reverse()'
1000000 loops, best of 5: 10.7 usec per loop

這兩種方法都可以反轉列表,但需要注意的是內置函數 reverse() 會更改原始列表,而切片方法會創建一個新列表。

顯然,內置函數 reverse() 比列表切片方法更快!

交換兩個值

用一行代碼交換兩個變量值是一種更具有 Python 風格的方法。

與其他編程語言不同,Python 不需要使用臨時變量來交換兩個數字或值。舉個簡單的例子:

variable_1 = 100 
variable_2 = 500

要交換 variable_1variable_2 的值,只需要一行代碼。

variable_1, variable_2 = variable_2, variable_1

您也可以對字典使用相同的技巧:

md[key_2], md[key_1] = md[key_1], md[key_2]

該技巧可以避免多次迭代和復雜的數據轉換,從而減少執行時間。

在函數內部循環

我們都喜歡創建自定義函數來執行我們自己的特定任務。然后使用 for 循環遍歷這些函數,多次重復該任務。

但是,在 for 循環中使用函數需要更長的執行時間,因為每次迭代都會調用該函數。

相反,如果在函數內部實現了 for 循環,則該函數只會被調用一次。

為了更清楚地解釋,讓我們舉個例子!另外,搜索公眾號Linux就該這樣學后臺回復“git書籍”,獲取一份驚喜禮包。

首先創建一個簡單的字符串列表:

list_of_strings = ['apple','orange','banana','pineapple','grape']

創建兩個函數,函數內部和外部都有 for 循環,從簡單的開始。

def only_function(x):new_string = x.capitalize()out_putstring = x + " " + new_stringprint(output_string)

和一個帶有循環的 for 函數:

def for_in_function(listofstrings):for x in list_of_strings:new_string = x.capitalize()output_string = x + " " + new_stringprint(output_string)

顯然,這兩個函數的輸出是一樣的。

然后,讓我們比較一下,哪個更快?

如您所見,在函數內使用 for 循環會稍微快一些。

減少函數調用次數

判斷對象的類型時,使用 isinstance() 最好,其次是對象類型標識 id(),對象值 type() 最后。

# Check if num an int type
type(num) == type(0) # Three function calls
type(num) is type(0) # Two function calls
isinstance(num,(int)) # One function call

不要將重復操作的內容作為參數放在循環條件中,避免重復操作。

# Each loop the len(a) will be called
while i < len(a):statement
# Only execute len(a) once
m = len(a)
while i < m:statement

要在模塊 X 中使用函數或對象 Y,請直接使用 from X import Y 而不是 import X; then X.Y。這減少了使用 Y 時的一次查找(解釋器不必先查找 X 模塊,然后在 X 模塊的字典中查找 Y)。

總而言之,你可以大量使用 Python 的內置函數。提高 Python 程序的速度,同時保持代碼簡潔易懂。

如果想進一步了解 Python 的內置函數,可以參考下表,或查看以下網站(https://docs.python.org/3/library/functions.html):

關于Python學習指南

學好 Python 不論是就業還是做副業賺錢都不錯,但要學會 Python 還是要有一個學習規劃。最后給大家分享一份全套的 Python 學習資料,給那些想學習 Python 的小伙伴們一點幫助!

包括:Python激活碼+安裝包、Python web開發,Python爬蟲,Python數據分析,人工智能、自動化辦公等學習教程。帶你從零基礎系統性的學好Python!

👉Python所有方向的學習路線👈

Python所有方向路線就是把Python常用的技術點做整理,形成各個領域的知識點匯總,它的用處就在于,你可以按照上面的知識點去找對應的學習資源,保證自己學得較為全面。(全套教程文末領取)

在這里插入圖片描述

👉Python學習視頻600合集👈

觀看零基礎學習視頻,看視頻學習是最快捷也是最有效果的方式,跟著視頻中老師的思路,從基礎到深入,還是很容易入門的。

在這里插入圖片描述

溫馨提示:篇幅有限,已打包文件夾,獲取方式在:文末

👉Python70個實戰練手案例&源碼👈

光學理論是沒用的,要學會跟著一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。

在這里插入圖片描述

👉Python大廠面試資料👈

我們學習Python必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有阿里大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。

在這里插入圖片描述

在這里插入圖片描述

👉Python副業兼職路線&方法👈

學好 Python 不論是就業還是做副業賺錢都不錯,但要學會兼職接單還是要有一個學習規劃。

在這里插入圖片描述

👉 這份完整版的Python全套學習資料已經上傳,朋友們如果需要可以掃描下方CSDN官方認證二維碼或者點擊鏈接免費領取保證100%免費

點擊免費領取《CSDN大禮包》:Python入門到進階資料 & 實戰源碼 & 兼職接單方法 安全鏈接免費領取

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213135.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213135.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213135.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構】C語言結構體詳解

目錄 前言 一、結構體的定義 二、定義結構體變量 三、結構體變量的初始化 四、使用typedef聲明新數據類型名 五、指向結構體變量的指針 總結 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高興與大家相識&#xff0c;希望我的博客能對你有所幫助。 &#x1f4a1…

做題筆記:SQL Sever 方式做牛客SQL的題目--查詢每天刷題通過數最多的前二名用戶

----查詢每天刷題通過數最多的前二名用戶id和刷題數 現有牛客刷題表questions_pass_record&#xff0c;請查詢每天刷題通過數最多的前二名用戶id和刷題數&#xff0c;輸出按照日期升序排序&#xff0c;查詢返回結果名稱和順序為&#xff1a; date|user_id|pass_count 表單創建…

Spring JDBC和事務管理

Spring JDBC是Spring框架用來處理關系型數據庫的模塊&#xff0c;對JDBC的API進行了封裝。 Spring JDBC的核心類為JdbcTemplate&#xff0c;提供數據CRUD方法 Spring JDBC使用步驟 Maven工程引入依賴spring-jdbc <dependency><groupId>org.springframework<…

springboot 整合nacos

Spring Boot整合Nacos 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天&#xff0c;我將帶領大家探索一個讓微服務架構更加便捷的利器——Spring Boot整合Nacos。在當今快速發展的互聯網時代&#…

應用安全:JAVA反序列化漏洞之殤

應用安全:JAVA反序列化漏洞之殤 概述 序列化是讓Java對象脫離Java運行環境的一種手段&#xff0c;可以有效的實現多平臺之間的通信、對象持久化存儲。Java 序列化是指把 Java 對象轉換為字節序列的過程便于保存在內存、文件、數據庫中&#xff0c;ObjectOutputStream類的 wri…

MYSQL創建用戶以及解決MYSQL新建數據庫看不到相關數據庫信息的解決方案

MYSQL創建用戶以及解決MYSQL新建數據庫看不到相關數據庫信息的解決方案 首先 我們在root用戶下&#xff0c;創建一個mysql用戶賬戶 如創建一個test用戶 密碼123456 命令如下&#xff1a; CREATE USER ‘test’‘localhost’ IDENTIFIED BY ‘123456’; 創建了一個db1的數據庫 …

唯創知音WTN6040F-8S語音芯片在空氣消毒機中的應用:提升用戶體驗與健康保障

在現代生活中&#xff0c;空氣質量成為人們越來越關注的問題。空氣消毒機作為一種能夠凈化空氣、殺滅病毒細菌的設備&#xff0c;受到了廣大消費者的青睞。然而&#xff0c;對于很多用戶來說&#xff0c;操作空氣消毒機可能存在一定的困惑和不便。為了解決這一問題&#xff0c;…

對Spring源碼的學習:Bean實例化流程

目錄 SpringBean實例化流程 Spring的后處理器 Bean工廠后處理器 Bean后處理器 SpringBean實例化流程 Spring容器在進行初始化時&#xff0c;會將xml配置的<bean>的信息封裝成一個BeanDefinition對象&#xff0c;所有的BeanDefinition存儲到一個名為beanDefinitionMa…

Docker容器的可視化管理工具—DockerUI本地部署與遠程訪問

文章目錄 前言1. 安裝部署DockerUI2. 安裝cpolar內網穿透3. 配置DockerUI公網訪問地址4. 公網遠程訪問DockerUI5. 固定DockerUI公網地址 前言 DockerUI是一個docker容器鏡像的可視化圖形化管理工具。DockerUI可以用來輕松構建、管理和維護docker環境。它是完全開源且免費的。基…

【GlobalMapper精品教程】066:shp轉JSON(GeoJson)案例實現

文章目錄 一、JSON與GeoJson的區別二、globalmapper實現shp轉JSON1. 加載shp數據2. shp轉json一、JSON與GeoJson的區別 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,它基于JavaScript的語法,可以將JavaScript對象中表示的一組數據轉換為字符串,在函數之…

ElasticSearch之cat recovery API

命令樣例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/recovery?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下&#xff1a; index shard time type sta…

2023 CCF中國軟件大會(CCF ChinaSoft) “程序語義深度理解前沿進展”論壇成功召開...

2023年12月2日&#xff0c;2023年度CCF中國軟件大會軟件程序語義深度理解前沿進展論壇成功召開。 本次論壇由南京大學卜磊老師和國防科技大學陳振邦老師主持&#xff0c;計算機研究與發展期刊代表侯麗珊老師致辭&#xff0c;旨在反映程序語義理解及其應用相關研究前沿進展與實踐…

Vue之模板語法

模板語法有兩大類&#xff1a; 1.插值語法 2.指令語法 讓我為大家介紹一下吧&#xff01; 一、插值語法 功能:用于解析標簽體內容。 寫法: {{xxx}}&#xff0c;xxx是js表達式&#xff0c;且可以直接讀取到data中的所有屬性。 舉個例子&#xff1a; <!DOCTYPE html> &l…

探索未來新趨勢:鴻蒙系統的嶄新時代

探索未來新趨勢&#xff1a;鴻蒙系統的嶄新時代 隨著科技的不斷發展&#xff0c;操作系統作為計算機和移動設備的核心&#xff0c;扮演著至關重要的角色。近年來&#xff0c;一種備受矚目的操作系統——鴻蒙系統&#xff08;HarmonyOS&#xff09;嶄露頭角&#xff0c;正引領著…

uniapp 微信小程序請求攔截器 接口封裝

前言&#xff1a; 請求攔截器可以在我們需要傳遞請求頭的時候使用&#xff0c;例如&#xff1a;token 也會在當token發生變化的時候給予響應&#xff0c;所以我們做好對應的判斷即可 話不多說&#xff0c;直接進入正題&#xff1a; 1.首先在根目錄創建common文件夾&#xff0c…

Selenium 中并行測試的重要性!

隨著技術的進步&#xff0c;測試解決方案變得更具可擴展性&#xff0c;加速了團隊從手動測試到Selenium測試自動化的轉型。但是成年人的世界&#xff0c;沒有什么是容易的。對于許多團隊來說&#xff0c;并行運行多個測試仍然是不可擴展的。他們傾向于遵循傳統的順序執行測試方…

MIT6.5840-2023-Lab2A: Raft-leader election

前置知識 什么是一致性算法&#xff1f; 安全性保證&#xff0c;絕對不會返回一個錯誤的結果&#xff1b;可用性&#xff0c;容忍集群部分節點失敗&#xff1b;不依賴時序來保證一致性&#xff1b;一條指令可以盡可能快的在集群中大多數節點響應一輪遠程過程調用時完成。小部分…

uniapp實戰 —— 可滾動區域 scroll-view (自適配高度,下拉刷新)

自適配高度 自定義的頂部導航欄&#xff0c;可參考博文 https://blog.csdn.net/weixin_41192489/article/details/134852124 如圖可見&#xff0c;在頁面滾動過程中&#xff0c;頂部導航欄和底欄未動&#xff0c;僅中間的內容區域可滾動。 整個頁面的高度設置為 100%&#xf…

鴻蒙開發—學習聲明式UI

基本UI描述 ArkTS通過裝飾器Component和Entry裝飾struct關鍵字聲明的數據結構&#xff0c;構成一個自定義組件。自定義組件中提供了一個build函數&#xff0c;開發者需在該函數內以鏈式調用的方式進行基本的UI描述&#xff0c;UI描述的方法請參考UI描述規范。 基本概念 stru…

GZ029 智能電子產品設計與開發賽題第4套

2023年全國職業院校技能大賽高職組 “GZ029智能電子產品設計與開發”賽項賽卷四 題目&#xff1a;模擬工業傳送帶物品檢測系統的設計與開發 1 競賽任務 在智能電視機上播放工業傳送帶傳輸物品視頻&#xff0c;模擬工業傳送帶物品檢測系統&#xff08;以下簡稱物品檢測系統&…