Python的一行代碼有何魅力?lambda匿名函數都自嘆不如

2020-12-03 數據分析師攻略

@數據分析師攻略 公眾號

關注、學習更多數據分析的知識與資訊

------

Python代碼具有簡潔易懂的特點,說明它有許多有趣且簡潔的代碼編寫方法,這也讓很多零基礎入門學習編程的同學偏愛從Python學起,接觸這個語言的人對Python這種簡潔的代碼編寫方法都愛不釋手。

其中,一行代碼編寫與lambda表達式是最具代表性的方法,下面分別來介紹一行代碼編寫和lambda表達式的代碼之美。

一行代碼

我們都知道,創建列表的方式有多種,比如直接定義、使用list()函數轉換、使用for循環迭代輸出等等。

不知道你們有沒有發現,當定義某種列表時,如果使用for循環迭代輸出的話,會讓代碼變得複雜,需要很多行代碼才能實現這一功能。如下面圖片,當使用for循環輸出一個列表時,使用了三行代碼才定義好一個新的列表。

但幸運的是,Python中存在一種十分高效的內置方法可以在一行代碼中實現定義列表的問題。如下面例子中,定義新列表的代碼只需要一行,這種方法不僅大大減少了代碼量,更便於閱讀和理解。

lambda表達式

在學習Python的過程中,很多人常常對lambda表達式的語法感到困惑,什麼是lambda?lambda表達式怎麼用,什麼時候該用lambda?

請看下去,下面內容將為你介紹。Python中的lambda是用來創建匿名函數,它是一個表達式,但函數體比def簡單,它的語法如下:

語法參數中,arg為入口參數,expression為函數體,用函數表達則如下圖所示:

用學習函數的方式來學習lambda表達式就非常容易理解了,在這裡lambda簡化了函數定義的書寫形式,使得代碼更簡潔。

lambda表達式有多個用處。

一是直接賦給一個變量,然後再像一般函數那樣調用。如下圖,賦一個變量AllSum,在並在調用輸出時輸入相應參數,計算他們的和。使用lambda表達式時也可以直接傳遞參數。

二是將lambda表達式作為參數傳遞給其他的函數,如結合map、filter、sorted、reduce等其他Python內置函數一起使用。

三是將lambda表達式嵌套到普通函數中,作為一個返回值。

四是在字符串聯合時,有默認值,也可以使用x=(lambda...)這種格式

五是對兩個列表元素進行求和

六是求字符串每個單詞的長度

lambda表達式的以上幾種用處,在工作時經常會遇到,適當的時候可以加以應用。但注意的是,lambda表達式並不會帶來運行效率上的提高,只是讓代碼變得簡潔,所以如果可以使用for...in等來完成的,儘量不使用lambda表達式。#python#

相關焦點

  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:>第一行是lambda聲明,x,y相當於傳入的參數,整個函數會返回x+y的值。
  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    lambda表達式介紹python中有一種靈活,便捷的且具有函數功能的表達式:lambda表達式!lambda表達式,又稱匿名函數,是現代各種程式語言爭相引入的一種語法,其功能堪比函數,設計卻比函數簡潔。
  • Python學習第40課-Lambda表達式創建匿名函數
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了使用def關鍵字來創建自定義函數,這種方式創建的函數都是有函數名的,我們也可以創建沒有函數名的函數,這種函數叫做匿名函數。Python中可以使用Lambda表達式來創建匿名函數。
  • Python匿名函數:Lambda表達式
    【1】何為Lambda表達式?我們以一張圖形進入主題:從圖中我們可以看出lambda表達式幾點特徵:簡潔性,符合了Python的一貫宗旨;起到了函數的作用,但未顯示函數名稱,這就是匿名函數;>有形參;有返回值的。
  • Python零基礎入門教程,如何使用lambda、filter和map函數?
    修修心養養性世無常貴,事無常師,靠人不如靠己。大綱函數類型定義及特性lambda函數定義及使用filter函數定義及使用map函數定義及使用引入函數類型概念函數類型定義:python中任意一個函數都有數據類型,這種數據類型是function(函數類型)
  • 一行Python代碼寫階乘函數
    背景我以前用Dart寫過一行的階乘函數:fact(double n) => n < 0 ? throw ('n must be bigger than 0') : n == 0 ?要求使用一行代碼編寫函數。調用方式為fact(x),其中x為要求階乘的數。不得使用分號以變相湊成一行。
  • 雲計算開發學習筆記:Python3匿名函數
    來源:TechWeb.com.cnpython 使用 lambda 來創建匿名函數。所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。lambda 只是一個表達式,函數體比 def 簡單很多。lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間裡的參數。
  • Python中的Lambda表達式
    Lambda表達式當我們需要做一些簡單的事情並且更希望快速完成工作而不是正式命名函數時,Lambda表達式是理想的選擇。Lambda表達式也稱為匿名函數。Python中的Lambda表達式是聲明小型匿名函數的一種簡短方式(沒有必要為Lambda函數提供名稱)。
  • python入門教程NO.8 用python寫個存款利息計算器
    本文涉及的python基礎語法為def函數,return,函數的各參數示例,匿名函數等函數初識函數是一段組織好的\ 可重複使用的\ 用來實現特定功能的代碼塊。函數能提高代碼的模塊性,和代碼的重複利用率,使一些重複編寫的代碼簡潔化,增加代碼的可讀性和美觀性。為了便於大家理解,我們將函數比作電飯煲,給它添加米飯和水,利用它的煮飯功能,就可以得到米飯在這裡,米飯和水就是需要傳遞給函數的參數,而煮飯功能就是一段可以重複利用的代碼塊,米飯就是利用函數得到的輸出。
  • Python基礎教程(一) - 函數和函數式編程
    什麼是函數函數是對程序邏輯進行結構化或過程化的一種編程方法。能將整塊代碼巧妙地隔離成易於管理的小塊,把重複的代碼放在函數中而不是進行大量的copy。前面使用過很多print()來進行列印,這是python提供的內建函數,你也可以自己創建函數,這叫做用戶自定義函數。創建函數你可以定義一個由自己想要功能的函數,用def語句來創建,標題行由def關鍵字,函數的名字,以及參數的集合(如果有的話)組成。
  • Python中函數的定義、傳參和lambda函數是什麼?他們有什麼用?
    今天我們來學習函數的定義、傳參和lambda函數。開發工具:IDLE (Python 3.7 64-bit或者32-bit) (註:不需要3.7版本的也行,只需要Python3的版本都可以,在語法方面沒有什麼不同。)
  • 「數據清洗」lambda表達式配合使用的四種函數
    >lambda 表達式是一個匿名函數,lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象,是一個匿名函數,即沒有函數名的函數。表達式是lambda函數執行的一段代碼,它可以返回任何值,返回函數對象。lambda表達式可以返回函數對象。在Python中,lambda的語法是唯一的。
  • Python小白學習記錄-匿名函數lambda
    匿名函數就是不需要通過def定義及顯示地指定函數名的函數匿名函數的特性(1)匿名函數只能有一個表達式,不用寫return,返回值就是該表達式的結果。(2)匿名函數沒有名字,不必擔心函數名衝突。(3)匿名函數也是一個函數對象,可以把匿名函數賦值給一個變量,再利用變量來調用該函數。(4)有些函數在代碼中只用一次,而且函數體比較簡單,不需要賦值給變量,直接調用可以減少代碼量,看起來比較」優雅「。
  • 大家都在說的「Lambda 表達式」到底是什麼?
    01定義Lambda表達式也被稱為箭頭函數,匿名函數,閉包Lambda表達式體現的是輕量級函數式編程思想『->』符號式Lambda表達式核心操作符號,符號左側是操作參數,符號右側是操作表達式1、在定義中有一個比較重要的詞就是「函數式編程」現在「
  • 寫Python 代碼不可不知的函數式編程技術
    把函數作為對象由於其他數據類型(如 string、list 和 int)都是對象,那麼函數也是 Python 中的對象。我們來看示例函數 foo,它將自己的名稱列印出來:deffoo():print("foo")由於函數是對象,因此我們可以將函數 foo 賦值給任意變量,然後調用該變量。
  • 《Python語言程序設計》學習筆記-函數的定義與使用
    1 函數的理解和定義函數是一段代碼的表示,所指定的參數是一種佔位符,如果不經過調用,不會被執行,參數是輸入、函數體是處理、結果是輸出 (IPO)。函數是一段具有特定功能的、可重用的語句組函數是一種功能的抽象,一般函數表達特定功能兩個作用:降低編程難度和代碼復用2 函數的使用及調用過程函數的調用是運行函數代碼的方式,調用時要給出實際參數,用實際參數替換定義中的參數-,函數調用後得到返回值。3 函數的參數傳遞函數可以有參數,也可以沒有,但必須保留括號。
  • Python一行代碼竟能幹這種事,同學都歡呼:要向女神表白!
    @數據分析師攻略 公眾號關注、學習更多數據分析的知識與資訊------Python的語法十分簡潔,簡潔到只需要一行代碼,即可輸出意想不到的效果。一行代碼到底有什麼獨特的魅力,下面一起來感受一下吧!1、畫一個愛心作為一個Python程式設計師,自從接觸Python就有種愛不釋手的感覺,逐漸地被它的簡潔高效的代碼所吸引,所有我想用一行Python代碼來畫出一個心形向Python語句表白。學會的小夥伴,也可以這行代碼來畫一個愛心,向自己的女神表白哦!
  • Python3中的匿名函數
    匿名函數即無名函數,其形式為:lambda 參數1,參數2:表達式,其中參數1,參數2為傳遞的參數,表達式計算出的結果為返回的值。# 普通函數def add1(x,y): return x+y print(add1(10,20)) # 匿名函數(lambda)add2 = lambda x,y:x+y # x,y 是參數,x+y的結果是函數的返回值print(add2(10,20))lambda是一個表達式,而不是語句,不是一個代碼塊。
  • Java8 lambda表達式
    匿名內部類是為了讓java程式設計師傳遞行為和傳遞數據一樣容易,不幸的是,他們並不容易,為了調用處理邏輯的代碼仍然有四行模板代碼,重複的模板代碼並不是唯一的問題,這種代碼也難以閱讀,我們並不想傳遞一個對象,而僅僅只需要傳遞某種行為,在java8中我們可以寫得更簡潔不同於傳遞一個實現某個接口的對象,我們傳遞了一段沒有命名函數的代碼
  • 一行代碼的大用處!看到最後一個我終於忍不住了...
    傳智播客博學谷微信號:boxuegu-get最新最全的IT技能免費領取各種視頻資料俗話說得好:兩個黃鸝鳴翠柳,一行代碼上青天!就一行你想讓我幹啥?一行代碼畫個愛心print('\n'.join([''.join([('Love'[(x-y) %len('Love')]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3一行代碼輸出Mandelbrot圖像print('\n'.join([''.join