我有兩個子列表的列表,我想檢查兩個列表中的子列表中的一個項目是否與另一個列表匹配?如何檢查兩個使用正則表達式的子列表之間是否存在任何匹配?
例如,我想看看,如果在索引0任何子表索引0
lsta = [['aaa','bbb','ccc'],['xxx','bbb','ccc'],['eee','bbb','ccc']]
lstb = [['aaa','b','2'],['xxx','ddd','efe']]
什麼是返回LSTA所有項目以最快的方式在其他列表中出現,如果任何項目在索引1在lstb的索引1處出現? :
Desired_List = [['aaa','bbb','ccc'],['xxx','bbb','ccc']]
For-Loops對我的大名單來說太慢了,所以我想知道是否有更快的方法?
這基本上是我想要完成的任務,但速度更快
Desired_List = []
for x in lsta:
for y in lstb:
if re.search(x[0],str(y)):
Desired_List.append(x)
或是否有任何其他的方式來完成這個任務?也許是一個列表理解?
也或許,但不知道什麼快:
Desired_List = filter(lambda x: re.search(str(x[0]),str(lstb)),lsta)
您可以發佈您的for循環? 請注意,這是一個n^2算法(lsta中的每個元素都需要與lstb的每個元素進行比較),但如果您正在執行大量的執行操作,則可以使用更好的數據結構加速它。 – jkinkead
我怎麼能改善這裏的數據結構? – Chris