Pythonの特殊関数と式filter,map,reduce,lambda
3605 ワード
1. filter(function, sequence):
sequenceの要素に対してfunction関数を実行し、function関数の実行結果がTrueの要素からなるシーケンスを返します.新しいシーケンスタイプは入力シーケンスと同じであることに注意してください.
テスト:正数を返します
結果:
2. map(function, sequence):
sequenceの要素に対してfunction関数を実行し、function関数の実行結果が要素からなるシーケンスを返します.functionが複数のパラメータをサポートしている場合、mapは同様に複数のsequenceを渡すことができます.新しいシーケンスタイプはListであることに注意してください.
テスト:シーケンス要素+1
結果:
3. reduce(function, sequence, starting_value):
sequenceの要素を反復してfunction関数を実行し、starting_をサポートします.初期値としてvalue
テスト:100を初期値としてシーケンスと
結果:
4. lambda:
Lambda式を使用して匿名関数を定義します.
テスト:入力値の加算
結果:
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