total=1
fornuminrange(1,101):
ifnum%2==0:
total=total*num
print(total)
#其實一樓答案基本都對了,就是range默認是從0開始的,
#而0對2的求余也是0,所以答案永遠是0,設置一個開始值為1,或者2就行了
② python兩個list相乘、相加
可以使用map函數世擾雀結李返合zip函數。下面的代碼只適用於python2
l1=[2,2,2,2]
l2=[3,3,3,3]
prod=搜早map(lambda(a,b):a*b,zip(l1,l2))
printprod
#[6,6,6,6]
add=map(lambda(a,b):a+b,zip(l1,l2))
printadd
#[5,5,5,5]
③ Python中的匿名函數——lambda函數
在Python中,lambda函數是一個簡單的匿名函數。該函數沒有函數名,它可以有多個參數,但函數只由一個表達式構成。
lambda函數具體的格式如下:
lambda 參數 : 表達式
其中, lambda 是關鍵字, 參數 是函數的參數,可以有0至多個。冒號後面是表達式,也是該函數中的唯一的表達式,lambda函數會返回該表達式的返回值。
我們來看一個具體的例子。
在上述代碼中,number1, number2是lambda函數的參數,number1**2+number**2是函數的表達式,該函數返回number1, number2兩個數的平方和。
上述代碼創建了一個lambda函數後將其賦值給變數sum_square, 在print函數中通過sum_square來調用這個lambda函數。
上述的lambda函數完全可用標準的函數來實現,我們可以將上述代碼改寫成下面的代碼。
在代碼中,定義了函數sum_square,該函數包含兩個參數,並執行一條語句並將該語句的執行結果作為函數返回值。通過上述代碼可以幫助我們更直觀地理解lambda函數。
lambda函數的可讀性較差,那麼為什麼要有這樣奇怪的匿名函數呢?這個要從lambda的使用場合說起。我們來看下面的代碼。
上述代碼定義了一個數值列表,調用python的內置函數filter來生成一個新的迭代器。 filter函數的第一個參數為一個函數,用於決定過濾的方法;第二個參數為一個可迭代的對象如列表、集合等。filter函數返回一個新的迭代器, 用於獲得滿足第一個函數為真的所有元素。在上述代碼中,我們給filter傳遞的第一個參數是一個匿名函數:lambda number:number%3==0, 該函數在一個數整除3時為True,否則為False. filter函數會創建一個新的迭代器,通過調用上述匿名函數來判斷該元素是否滿足條件,得到所有3的倍數的數。
當然,上述代碼也可以使用正常的函數方式來實現,如下所示:
我們可以看到,所有匿名函數的功能都可以通過標准函數來實現。匿名函數常在調用其它函數(如filter, map等)時作為參數使用。使用匿名函數可以使代碼更為精簡。匿名函數主要用於完成簡單的任務,如果匿名函數過於復雜,會導致可讀性較差,調試起來也比較困難,因此,強烈不建議使用lambda寫天書般的代碼。總之,要根據實際情況決定是否使用匿名函數。
④ python語句 lambda x: x(i) 中x(i)是什麼意思
這個x(i)我覺得應該是把i的值賦值給x的意思
整體分析一下這段代碼
twotimes = lambda x:x*2 # 傳入x輸出x乘2
square = lambda x:x**2 # 傳入x輸出x平方
n = [list(map(lambda x:x(i),[twotimes,square])) for i in range(6)] # 這里i循環生成0-5,賦值給i,在分別傳入twotimes,square進行計算,將結果通過map打包,最後轉化為列表輸出
print(n)