2018-11-29學習筆記

1. 遞歸列出目錄裏的文件

遞歸是函數內部調用本身,一般用來計算階層python

計算階層有循環和遞歸兩種方法;函數

普通方法:spa

    - 使用循環對象

1到n遞乘:遞歸

#! /usr/bin/pythonio

def factorial(n):function

sum = 1import

for i in range(1, n+1):匿名函數

sum *= ilambda

return sum

print factorial(5)

1到n遞加:

#! /usr/bin/python

def factorial(n):

sum = 0

for i in range(1, n+1):

sum += i

return sum

print factorial(100)

遞歸調用:

n到1遞乘:

def factorial(n):

   if n == 0:

        return 1

   else:

        return n * factorial(n-1)

 

print factorial(5)

1到n遞加:

#! /usr/bin/python

def factorial(n):

if n == 0:

return 0

else:

return n + factorial(n-1)

print factorial(100)

遞歸的注意事項:

必須有最後的默認結果

        if n == 0

遞歸參數必須向默認結果收斂的:

        factorial(n-1)

 

os模塊的幾個方法:

os.listdir()

列出目錄下的文件和目錄,以列表形式輸出

os.path.isdir()

判斷是否是目錄,返回bool值

os.path.isfile()

判斷是否是文件,返回bool值

os.path.join()

鏈接路徑,不會判斷文件存不存在

打印目錄下全部文件:

#! /usr/bin/python

import os

import sys

 

def print_files(path):

lsdir = os.listdir(path)

dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]

files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]

if dirs:

for d in dirs:

print_files(os.path.join(path,d))

if files:

for f in files:

print os.path.join(path,f)

print_files(sys.argv[1])

 

2. 匿名函數

   - lambda函數是一種快速定義單行的最小函數,能夠用在任何須要函數的地方。

def fun(x, y):

         return x*y

    fun(2, 3)

r = lambda x,y: x*y

    r(2, 3)

注:<function __main__.<lambda>>返回帶<>號的都是對象

 

匿名函數優勢:

    - 1.使用python寫一些腳本時,使用lambda能夠省去定義函數的過程,讓代碼更加精簡。

    - 2. 對於一些抽象的,不會被別的地方再重複使用的函數,有時候函數起個名字也是個難題,使用lambda不須要考慮命名的問題。

    - 3. 使用lambda在某些時候讓代碼更容易理解。

 

lambda語句中,冒號前是參數,能夠有多個,逗號隔開,冒號右邊是返回值。

lambda語句構建的實際上是一個函數對象

 

reduce()函數:

reduce是內置函數

reduce後面的函數必須有兩個參數,後面跟一個序列

序列中的參數執行所跟函數的return

def add(x, y):

        return x + y

    sum = reduce(add, [1, 2, 3])

 

reduce(lambda x,y:x+y, range(1,4))

相關文章
相關標籤/搜索