簡體   English   中英

使Python代碼更快

[英]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)

代碼必須根據de列表中是否存在c列表的元素來增加或減少happy變量。 對於cde列表中的少量元素,此代碼運行良好。 但是,當元素很多時,由於超時而終止了代碼執行。

我該怎么做才能使其運行更快?

您可以避免循環。 變量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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM