閑來無事時積累的一些Linq函數,有時間就更新。
需要注意python版本如果低於3.0不支持lambda,只能單獨寫函數傳參,比較麻煩
1.FirstOrDefault:
def FirstOrDefault(collection, func): result = filter(func, collection) if len(result) == 0: return None return result[0] def main(): def condition(m): return m < 3 print FirstOrDefault([1,2,3,4], condition) #print 1
返回1
2.Where:
def Where(collection, func): result = filter(func, collection) if len(result) == 0: return None return result def main(): def condition(m): return m < 3 print Where([1,2,3,4], condition) #print [1,2]
返回篩選后的數組1,2
3.Distinct:
def Distinct(collection, isContainFunc): resultList = list() for item in collection: def firstOrDefaultPredicate(m): return isContainFunc(m,item) containValue = FirstOrDefault(collection, firstOrDefaultPredicate) if containValue != None: if not item in resultList: resultList.append(item) return resultList def main(): tmp = [1,2,2,3,4,3] def compare(x,y):return x==y result = Distinct(tmp, compare) print result #print [1,2,3,4]
去重復,依賴FirstOrDefault。