是否可以使此代码运行得更快?
a,b=map(int,input().split())
c=list(map(int,input().split()))
d=list(map(int,input().split()))
e=list(map(int,input().split()))
happy=0
for i in c:
if i in d:
happy=happy+1
elif i in e:
happy=happy-1
print(happy)
代码必须增加或减少happy
变量,具体取决于c
或d
列表中是否存在e
列表的元素。此代码适用于c
,d
和e
列表中的少量元素。但是当有许多元素时,代码执行会因超时而终止。
我该怎么做才能让它跑得更快?
答案 0 :(得分:3)
你可以避免循环。
变量happy
基本上是d
中找到的元素数量与e
中找到的元素数量之间的差异。
c
可能有重复项吗?
如果您只想计算一次相同的元素,那么您可以使用set
隐式删除重复项:
set_c = set(c)
happy_match = set_c.intersect(d)
unhappy_match = set_c.intersect(e)
happy = len(happy) - len(unhappy_match)
如果要计算每次出现(包括重复),则可以将相同的逻辑应用于列表:
happy_match = sum(1 if el in d else 0 for el in c)
unhappy_match = sum(1 if el in e else 0 for el in c)
happy = len(happy) - len(unhappy_match)