• Python中模拟C# Linq的一些操作


    闲来无事时积累的一些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。

  • 相关阅读:
    HDOJ 1015 Safecracker
    POJ3187 虽然超时了,但是还得纪念一下
    HDOJ 1248
    HDOJ 1161
    动态规划——砝码称重
    P01P02P03各种背包!!
    对基类与派生类对象和指针赋值的小结
    程序员技术练级攻略
    CodeForces 愚人节题目
    java入门
  • 原文地址:https://www.cnblogs.com/hont/p/5002913.html
Copyright © 2020-2023  润新知