1
我有包含數組無效的字符串過濾器使用lambda函數蟒
arr_invalid = ['aks', 'rabbbit', 'dog'].
我通過RDD解析使用lambda功能和需要的,如果任何這種無效的字符串的來自輸入字符串 像忽略的情況下如果輸入字符串是akss
或aks
都忽略。
如何在不爲每個無效字符串編寫過濾器的情況下實現這一目標?
我有包含數組無效的字符串過濾器使用lambda函數蟒
arr_invalid = ['aks', 'rabbbit', 'dog'].
我通過RDD解析使用lambda功能和需要的,如果任何這種無效的字符串的來自輸入字符串 像忽略的情況下如果輸入字符串是akss
或aks
都忽略。
如何在不爲每個無效字符串編寫過濾器的情況下實現這一目標?
需要,除非話來排序,以每串比較,你可以使用any
,看是否有子是在每個字符串:
arr_invalid = ['aks', 'rabbbit', 'dog']
strings = [ "aks", "akss","foo", "saks"]
filt = list(filter(lambda x: not any(s in x.lower() for s in arr_invalid),strings))
輸出:
['foo']
如果你只是想排除字符串,如果它們以子字符串之一開始:
t = tuple(arr_invalid)
filt = list(filter(lambda x: not x.lower().startswith(t), strings))
輸出:
['foo', 'saks']
如果輸入一個字符串只是拆分:
st = "foo akss saks aks"
t = tuple(arr_invalid)
filt = list(filter(lambda x: not x.startswith(t),st.lower().split()))
您也可以只使用一個列表比較:
[s for s in st.lower().split() if not s.startswith(t)]
至於捅評論,你可以找到確切的火柴一套,你仍然需要它與任何和in或str.startswith結合匹配的子串:
arr_invalid = {'aks', 'rabbbit', 'dog'}
st = "foo akss saks aks"
t = tuple(arr_invalid)
file = list(filter(lambda s: s not in st or not s.startswith(t),st.lower().split())
使'arr_invalid'成爲獎勵積分的一個集合:) – poke
@poke,true,如果我們得到完全匹配,它會匹配完整的單詞以避免O(n)搜索。 –