"""一个更好的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)
答案 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代码。