當前位置:首頁 » 編程語言 » pythonlambdalist

pythonlambdalist

發布時間: 2022-08-08 01:04:06

A. python字典里的 列表lambda 的演算法

new_donor_data=dict(map(lambdax:(x,[y*2foryindonor_data[x]]),donor_data.keys()))

B. python中map(lambda x: x % mydict, mylist)是什麼意思

我估計你的 mylist 是一個list,裡面存的是格式化字元串,而 mydict 則是一個記錄格式化字元串中所需要用到的參數信息,比如類似於下面的代碼


mylist=["mynameis%(name)s","andmyageis%(age)d"]
mydict={'name':'Tom','age':13}

result=map(lambdax:x%mydict,mylist)
forsinresult:
prints


就可以得到下面的列印


my name is Tom

and my age is 13


另外一種可能,就是 mylist 里存的是整數,而 mydict 是一個整數,這樣了話,map語句是將 mylist 里每一個整數對 mydict 進行取余操作,這個有點不太合理,沒必要對一個整數命名成 mydict。

C. Python 中的 lambda 和lambda 有什麼區別

Python的lambda里只能寫一行啦、不能有statement只能有expression啦,這些還是小問題,真正的問題是Python對Closure的實現根本是有缺陷的。閉包的實現都是錯誤的,哪來的真正的匿名函數?
比如在Python2里這樣的代碼是沒法運行的,

def counter():
count = 0
def inner():
count += 1
return count
return inner

c = counter()
print c()

Python告訴你一個UnboundLocalError,count為什麼會unbound呢,因為closure沒有正確地實現。什麼是closure呢,closure是一個二元組:lambda(別管是有名字的還是沒名字的),和這個lambda定義時的environment。而這個environment包含了lambda中的自由變數(比如這里的count),這樣才把這個lambda『封閉』起來了,所以叫閉包。
我所理解的『真正的』的lambda是說:完整地支持higher-order function,即函數可以作為函數的參數,也可以作為函數的返回值,那怕引入了mutation。為了達到這一點,語言的實現需要正確地實現closure和lexical scope。而mutation和lexical scope是兩個正交的概念,Python因為有mutation而沒有完整實現lexical scope進而沒有完整地支持first-order function,這就叫broken lambda。Python3里新加的nonlocal關鍵字就是為了解決closure的歷史問題。
然而同樣的代碼在Racket/Scala/OCaml里卻可以跑地歡快:

(define (counter)
(define count 0)
(define (inner)
(begin (set! count (add1 count))
count))
inner)

(define c (counter))
(c) ;1
(c) ;2
(c) ;3

def counter(): () => Int = {
var count = 0
def inner() = {
count += 1
count
}
inner
}

val c = counter()
println(c())
println(c())
println(c())

let counter () =
let count = ref 0 in
let inner () =
count := !count + 1;
!count
in inner
;;

let c = counter();;
print_int(c());
print_int(c());
print_int(c());

真正的lambda就是正確而完整地實現了lexical scope和closure的lambda。這就是python的lambda和『真正的』的lambda的區別。
當然Python並不是函數式語言,Python也從來沒有自我標榜是函數式語言,當年lambda都是一個Lisp程序員給Python加的,而且據說當時Guido是強烈反對的……
BTW,lambda這個名字確實沒什麼神秘的

===
Update:
經靈劍提醒,由於Racket和Python中對於list comprehension的實現不同,list comprehension的例子是不太恰當的。Racket中的list comprehension經過宏展開後是遞歸的函數調用的形式,而類似的python代碼可能是這樣的:

map(lambda i: lambda n: i+n, range(10))[3](4)

這個時候Python的行為和Racket是一樣的。但對於list comprehension而言,Python並不是函數式語言(again),同Haskell、Scala、Racket這些的實現是不同的,在comprehension的過程中並沒有創建出各自包含i的閉包。
原:
比如這個Python代碼:

fs = [(lambda n: i + n) for i in range(10)]
fs[3](4)

fs[3](4)應該是幾呢?Python告訴你是13 = = 因為每一個lambda都share了相同的i。
同樣的代碼再看看Racket里呢:

(define fs
(for/list ([i (range 10)])
(λ (n) (+ i n))))
((fourth fs) 4)

Racket里正確地告訴你結果是7。

D. python中lambda和itemgetter的區別

operator.itemgetter函數 operator模塊提供itemgetter函數用於獲取象哪些維數據參數些序號(即需要獲取數據象序號)面看例 a = [一,二,三] >>> b=operator.itemgetter(一) //定義函數b獲取象第一域值 >>> b(a) 二 >>> b=operator.itemgetter(一,0) //定義函數b獲取象第一域第0值 >>> b(a) (二, 一) 要注意operator.itemgetter函數獲取值定義函數通該函數作用象才能獲取值 sorted函數 Python內置排序函數sortedlist或者iterator進行排序官中國文檔見:中國docs.python.org/二/library/functions.html?highlight=sorted#sorted該函數原型: sorted(iterable[, cmp[, key[, reverse]]]) 參數解釋: (一)iterable指定要排序list或者iterable用說; (二)cmp函數指定排序進行比較函數指定函數或者lambda函數: students類象list沒員三域用sorted進行比較自定cmp函數例要通比較第三數據員排序代碼寫: students = [('john', 'A', 一5), ('jane', 'B', 一二), ('dave', 'B', 一0)] sorted(students, key=lambda student : student[二]) (三)key函數指定取待排序元素哪項進行排序函數用面例說明代碼: sorted(students, key=lambda student : student[二]) key指定lambda函數功能元素student第三域(即:student[二])sorted排序students所元素第三域進行排序 面operator.itemgetter函數用該函數實現例要通student第三域排序寫: sorted(students, key=operator.itemgetter(二)) sorted函數進行級排序例要根據第二域第三域進行排序寫: sorted(students, key=operator.itemgetter(一,二)) 即先跟句第二域排序再根據第三域排序 (四)reverse參數用說bool變數表示升序降序排列默認false(升序排列)定義True按降序排

E. python中使用lambda實現標准化

lambda函數一般是在函數式編程中使用的。通舉個栗子,對於這樣一個list L,求L中大於3的元素集合L = [1, 2, 3, 4, 5]對於過程式編程,通常會這么寫L3 = []for i in L:if i 3:L3.append(i)而對於函數式變成,只需要給filter函數一個判斷函數就行了def greater_than_3(x):return x 3L3 = filter(greater_than_3, L)由於這個判斷函數非常簡單,用lambda來實現就非常簡潔、易懂L3 = filter(lambda x: x 3, L)這是個很簡單的例子,可以看出lambda的好處。lambda函數更常用在map和rece兩個函數中。當然,lambda函數也不見得都好,它也可以被用得很復雜,比如這個問題的答案,可以用python這樣一句解決,這個lambda函數看起來那的確是挺辛苦的。

F. python中rece和lambda的一個小問題

rece(function, sequence, starting_value)
對sequence中的item順序迭代調用function,如果有starting_value,還可以作為初始值調用。
lambda 允許你快速定義單行的最小函數,例如:
a=lambda x: x^2
a(3) 則返回整數9.

回頭來看你的函數,lambda定義了一函數關於 x,y的關系式, 返回x*y+1的值,rece中的sequence是一個list,順序取出x=0,y=0,第一次返回x=0,y=0,(x,y)=1,然後第二再取值,x=x,出錯了,list中的x沒有定義。

G. python的lambda形式的理解

lambda 創建一個匿名函數。冒號前面是傳入參數,後面是一個處理傳入參數的單行表達式。
調用lambda函數返回表達式的結果。
list的sort 同於內建函數sorted。它有三個參數cmp,key,reverse,均有默認值。
cmp是一個比較器,自定義比較器的話傳入兩個參數x,y,返回值限制為1(x>y), 0(x=y), -1(x<y)。默認是常規比較,數字比較,字元串比較等等。
key是對序列元素處理(比如問題中序列元素仍是序列,就可以再對序列取索引值),也就是sort的比較器實際接收到值是key處理後的結果(問題中實際參與比較的是1,2,3,4)。
reverse默認是False,意思是從小到大排序,傳入True,就從大到小排。

H. Python lambda怎麼寫

tim@crunchbang:~$python
Python2.7.3(default,Mar142014,11:57:14)
[GCC4.7.2]onlinux2
Type"help","right","credits"or"license"formoreinformation.
>>>wordsList=['cat','elephant','rat','rat','cat']
>>>result=map(lambdax:(x,1),wordsList)
>>>result
[('cat',1),('elephant',1),('rat',1),('rat',1),('cat',1)]
>>>

I. python lambda怎麼找到含有某個字的所有項

importre
count=0
foriindic:
forjindic[i]:
ifre.search(r'snRNA',j):
count+=1
printj
printcount

熱點內容
豬豬俠腳本沒反應 發布:2025-01-22 08:08:37 瀏覽:811
賽博朋克跟永劫無間哪個配置高 發布:2025-01-22 08:07:07 瀏覽:534
請盡快上傳 發布:2025-01-22 08:06:22 瀏覽:188
河北編程培訓 發布:2025-01-22 08:01:42 瀏覽:591
a星演算法視頻 發布:2025-01-22 07:55:01 瀏覽:878
快手安卓怎麼直播 發布:2025-01-22 07:54:58 瀏覽:937
買伺服器搭建vpn 發布:2025-01-22 07:53:21 瀏覽:808
路由器忘記密碼如何解 發布:2025-01-22 07:38:47 瀏覽:154
5分鍾視頻編譯 發布:2025-01-22 07:36:33 瀏覽:772
asp執行存儲過程 發布:2025-01-22 07:35:55 瀏覽:127