簡體   English   中英

在 Python 3 中使用 sys 查找兩個排序的整數列表的交集

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

問題是我不知道如何將讀取原始輸入的命令放入代碼中。

只需使用集合交集運算符

def intersection(lst1, lst2):
    return list(set(lst1) & set(lst2))

如果您有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.

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