转,Python中模拟C# Linq的一些操作
自:https://www.cnblogs.com/hont/p/5002913.html
闲来无事时积累的一些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。

浙公网安备 33010602011771号