[英]Make Python code faster
是否可以使此代碼運行更快?
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)
代碼必須根據d
或e
列表中是否存在c
列表的元素來增加或減少happy
變量。 對於c
, d
和e
列表中的少量元素,此代碼運行良好。 但是,當元素很多時,由於超時而終止了代碼執行。
我該怎么做才能使其運行更快?
您可以避免循環。 變量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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.