這不是關於如何做的問題,而是關於如何更有效地做到這一點的問題。我有2個列表,一個包含來自子列表的所有元素和更多元素的superList。讓我們在下面的列表,例如:檢查Python中另一個列表中列表位置的最有效方法
a = [0,1,2,3,4,5,6,7,8,9] # a is my superList
b = [2,3,5,7] # b is my subList
我要檢查其中B元素的存在,在某種程度上,我有一個列表,並回答諸如:
[0, 0, 1, 1, 0, 1, 0, 1, 0, 0]
我有這樣的代碼這裏對短列表和少量ob子列表做的工作很好,但是一旦數據大小開始增加,就會變得效率低下。哪種解決方案比下面的解決方案更有效。記住,我想運行這個代碼,對longList中的shortList進行大量的檢查。這是一個嵌套在內部的情況:
def isInList(longList, shortList):
indexList = []
for i in range(len(longList)):
if longList[i] in shortList:
indexList.append(1)
else:
indexList.append(0)
return indexList
性能是O(nm)的其中n是a的大小和M是B的大小。你可以得到一個O(n)的解決方案,如果你使短名單成爲'set' –
語法明智,你可以只爲'我在longList:如果我在shortList:'等 – ryugie
如何列表解析? –