Understaning篩選:
您otherway周圍搜索。 你應該這樣做filter(needle,haystack)
但你正在做filter(haystack,needle)
例
>>> names = ['Anna', 'Grant', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
>>> b_names = filter(lambda s: s.startswith('B'), names)
>>> print b_names
#Output
['Bob', 'Barbara']
filter(function, iterable)
相當於[item for item in iterable if function(item)]
如果功能不無和[item for item in iterable if item]
如果功能無。
瞭解蘭巴: lambda
只是另一個詞function
當你看完下面的行,由function
在你的心中取代lambda
:
>>> f = lambda x: x + 10
>>> f(3)
13
舉例:2
f = lambda x, y : x * y
的以上功能相當於下面的功能。
def f(x, y):
return x * y
lambda
返回給定參數的:
標誌的左邊將返回在它右邊的表達式的值的函數。 更多關於拉姆達在這個post
from collections import Counter
word_list = ['Geico','Mike']
a_string = "what day is it, Mike Mike Mike"
li=a_string.split()
print Counter(li)
print [i for i in li if i in word_list]
Output:
Counter({'Mike': 3, 'what': 1, 'it,': 1, 'day': 1, 'is': 1})
['Mike', 'Mike', 'Mike']
你不能指望拿到三「邁克」 S如果你從一些含有它只有一次過濾。 –
你正在做相反的 打印過濾器(lambda x:x在word_list,李) 過濾器(針,乾草堆) – Ajay
@StefanPochmann我不知道過濾器()如此好,但有很多事情可以幹DRY處理。 Ajay最終在他的回答中解釋得很好。 – Shane