2013-10-03 63 views
-2

我正在嘗試編寫代碼,以便搜索將返回任何子列表,其中搜索的兩個元素都是列表的前兩個元素。基本上,我想,如果我有搜索具有兩種或兩種或三種元素的子列表的兩個元素

data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]] 
search = 4,3 

返回

there [4,3,0] 
there [4,3] 

目前,我有

search = [4,3] 
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]] 
if search in data: 
    print("there", search) 
else: 
    print("not there") 

但這只是回報

there [4,3] 

編輯:我也需要能夠在其中附加子列表h包含搜索。

感謝您的任何幫助。 乾杯! 5813

+2

好認真,你一直在問同樣的問題每次只略有變化。 http://stackoverflow.com/questions/19128342/search-for-multiple-sublists-of-same-list-in-python http://stackoverflow.com/questions/19149273/search-for-multiple-elements-in -same-sublist-of-list – roippi

+0

當我添加評論或線程時,我正在尋找一個稍微調整過的答案,我被告知要開始一個新的答案。 – 5813

回答

2

我結束了使用阿洛克的方法的修改版本,我代替他的「d」和「子列表」,所以我可以在以後打印並添加它。感謝所有的幫助!

search = [4,3] 
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]] 

for sublist in data: 
    if search == sublist[:len(search)]: 
     sublist.append("c") 
     print("there", sublist) 

返回正是我想要的:

there [4,3,0,'c'] 
there [4,3,'c'] 
1

使用for循環遍歷每個子列表和Python數組切片,以比較您正在搜索的列表中的前兩項。

search = [4,3] 
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]] 

for d in data: 
    if search == d[:len(search)]: 
     print("there", search) 
    else: 
     print("not there") 
1

其中一個解決方案是:

search = [4,3] 
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]]  
sublist = [] 

flag = False 
for x in data: 
    flag = True 
    for v in search: 
     if v not in x: 
      flag = False 
      break 
    if flag: 
     sublist.append(x) 

print "sublist : ", sublist 
+0

非常感謝您的精彩回答,但有沒有辦法追加子列表,以便附件位於包含搜索的子列表的括號內?再次感謝。 – 5813