Pythonの特殊関数と式filter,map,reduce,lambda

3605 ワード

1. filter(function, sequence):
sequenceの要素に対してfunction関数を実行し、function関数の実行結果がTrueの要素からなるシーケンスを返します.新しいシーケンスタイプは入力シーケンスと同じであることに注意してください.
テスト:正数を返します
#!/usr/bin/env python

def findPositiveNum(num):
    if num > 0:
        return True
    else:
        return False

nums = (3,2,1,0,-1,-2,-3)

result = filter(findPositiveNum, nums)

print result

結果:
(3, 2, 1)

 
2. map(function, sequence):
sequenceの要素に対してfunction関数を実行し、function関数の実行結果が要素からなるシーケンスを返します.functionが複数のパラメータをサポートしている場合、mapは同様に複数のsequenceを渡すことができます.新しいシーケンスタイプはListであることに注意してください.
テスト:シーケンス要素+1
 1 #!/usr/bin/env python
 2 
 3 def numPlusOne(num):
 4     return num + 1
 5 
 6 nums = (3,2,1,0,-1,-2,-3)
 7 
 8 result = map(numPlusOne, nums)
 9 
10 print result

結果:
[4, 3, 2, 1, 0, -1, -2]

 
3. reduce(function, sequence, starting_value):
sequenceの要素を反復してfunction関数を実行し、starting_をサポートします.初期値としてvalue
テスト:100を初期値としてシーケンスと
#!/usr/bin/env python

def addNum(num1, num2):
    return num1 + num2

nums = (4,3,2,1,0,-1,-2,-3)

result = reduce(addNum, nums, 100)

print result

結果:
104

 
4. lambda:
Lambda式を使用して匿名関数を定義します.
テスト:入力値の加算
#!/usr/bin/env python


addNum = lambda x : x + 2
result = addNum(1)
print result

print (lambda x: x + 2)(1)

結果:
3
3