亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何減少Python代碼的運行時間

如何減少Python代碼的運行時間

aluckdog 2023-08-15 17:18:03
下面的代碼將測試用例的數量作為第一個輸入值(a),然后將(a)次2之間的值1≤x≤y≤10^9作為第二個輸入值。代碼的輸出是可被代碼中定義的值整除的值的數量、完全平方數以及滿足兩個條件的值的數量。代碼對于較小的值可以順利運行,但對于較大的值,運行時間會增加。我需要運行時間少于 5 秒。import numpy as npa = np.array(input(), dtype=int)B=[]for i in range(a):    b = np.array(input().split(), dtype=int)    B.append(b)       def is_square(n):    return (n**.5).is_integer()for a, b in B:        print('{}'.format(sum(v % 12 == 0 for v in range(a, b+1))), '{}'.format(sum(is_square(v) for v in range(a, b+1))),'{}'.format(sum((v % 12 == 0) and is_square(v) for v in range(a, b+1))))
查看完整描述

1 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

不需要使用 np.array,在這種情況下它不會比內置類型更快(甚至更慢)。其他一些想法:

  • 打印需要時間,因此您可以將結果附加到某個列表并最后打印出來。

  • 將條件結果(可被 12 和完全平方整除)保存到單獨的列表中,然后從這兩個列表中創建一個集合將使第三個條件更快(您將顯著增加內存占用)

  • 這樣的測試效率很低。例如第一個條件:“找到范圍 (a,b) 中可被 12 整除的項目數” - 我會找到該范圍內可被 12 整除的第一個數字(稱為 x ),最后一個數字可被 12 整除(稱為,然后(y-x)/12 + 1應該產生項目數量;無需檢查所有這些。

第二個和第三個條件,只需生成該范圍內的正方形列表:找到范圍內的最小正方形(稱為x),找到范圍內的最大正方形(稱為y)。進而sum( ((x**2)%12 == 0) for x in range(x,y+1) )

實際上這里沒有太多的編程,更像是數學。如果您收到了請告訴我們。干杯。


查看完整回答
反對 回復 2023-08-15
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號