[英]Find the intersection of two sorted lists of integers using sys in Python 3
如果您完成了 HireVue 編碼挑戰,您就會知道您的輸入已經存在於系統中,應該使用以下命令調用:
import sys
(我猜)
我應該如何編寫讀取原始輸入以找到兩個列表之間的交集的代碼?
交集只是兩個列表之間的公共值。
我的嘗試:
def intersection(lst1, lst2):
lst3 = [value for value in lst1 if value in lst2]
return lst3
問題是我不知道如何將讀取原始輸入的命令放入代碼中。
如果您有import sys
並且您也需要自己進行輸入,我知道的一種方法是使用sys.stdin
進行輸入。
sys.stdin是 Python 的標准輸入流,通常使用運行程序的終端或控制台進行輸入。 但它也可以更新為使用一些不同的文件。 可能是您的代碼平台已更新此參數以引用他們自己的輸入。
使用sys.stdin
,您可以使用一些方法來幫助您從 stdin 獲取輸入,例如:
sys.stdin.read()
: 從sys.stdin
讀取一些字符sys.stdin.readline()
: 從sys.stdin
讀取一行sys.stdin.readlines()
: 從sys.stdin
讀取多行要檢查所有可用的方法,請使用import sys; help(sys.stdin)
使用 Python 3 import sys; help(sys.stdin)
。
現在,對於您所需的交集代碼, [val for val in lst1 if val in lst2]
可能會按預期工作,但需要更多時間,因為列表in
操作符將在O(n)
時間內在 lst2 中查找您的 val,如果您使用集合,可以對其進行優化,如此處的其他答案中所述。
我希望它有幫助。 我最初打算發表評論,但現在聲望不到 50,我別無選擇,只能單獨回答你的問題。 如果此處有任何不正確或不清楚的地方,請通過下面的評論告訴我,我們可能會對其進行更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.