Python代码,用于查找范围内两个整数序列中的公共元素的总和

时间:2016-08-02 19:38:11

标签: python

"""一个更好的Python代码,可以找到两个序列中常见元素的总和#of"""""""

#F() constructs a sequence:

def F():
    bot=int(input("Enter start value:")) 
#start value
    top = int(input("Enter stop value:"))
#stop value
    L=range(bot,top+1)
    return(L)
# Let L1 and L2 two sequences
L1=F()
L2=F()
print(L1, L2)


#G()returns the sum of the common elements in L1 and L2:

def G(L1, L2):
    res = []
    for x in L1:
        if x in L2:
            res.append(x)
    return sum(res)
print(G(L1, L2))


# Example: L1=range(1,11), L2=range(5,21): 45(=5+6+7+8+9+10)

1 个答案:

答案 0 :(得分:1)

如果您的解决方案正常运行,为什么要寻找“更好的Python代码”?你的代码足够好了。我要做的唯一改变是列表res。你真的不需要它:

def G(L1, L2):
    total = 0
    for x in L1:
        if x in L2:
            total += x
    return total

如果您确定L1和L2中的所有元素都是唯一的,那么使用set的解决方案就很好。在这种情况下,因为您使用range生成它们,所以它们是唯一的,您可以使用:

sum(set(L1).intersection(set(L2))

如果有重复项,您可以过滤元素:

sum(filter(lambda x: x in L2, L1))

或者你也可以使用列表理解:

sum([x for x in L1 if x in L2])

但我再说一遍:我认为你的解决方案是很好的Python代码。