2015-06-24 144 views
-2

我有一個列表子列表,我想搜索並檢查兩個單獨的元素是否在同一個子列表中。因此,例如,在以隨機順序16的列表元素,:檢查列表的同一子列表中是否存在兩個元素Python

list=[[], [9, 10], [1, 2, 8, 13], [0, 3, 6, 14], [5, 7, 11], [],] 
#Max number of classes 
MaxN=5 
for k in range(0,MaxN): 
    for i in list[k]: 
     ##if (check whether i exists in same sublist as i+1): 
      continue 
     else 
      foo() 

所以這之間的連接[9,10],[1,2],[1,8],[1,13],[ 2,8],[2,13],[8,13],[0,3],[0,6],[0,14],[3,6],[3,14],[ 14],[5,7],[5,11],[7,11]都將被跳過,並且foo操作將在列表的其餘部分執行。

我想:

for k in range(0,MaxN): 
    for i in list[k]: 
     if list[i]==list[i+1]: 
      print 'skipped' 
     else: 
      print 'included' 

但我得到一個列表索引超出範圍錯誤,我似乎不明白的。

+0

我不明白這個問題......你可以發表更多的例子嗎?或用一些輸入什麼是預期輸出 – JuanPablo

+0

你能解釋爲什麼'[9,10] [1,2] [1,8] [1,13],[2,8],...,[7,11 ]'來吧? –

回答

1

試試這個:

>>> for k in range(5):  #or range(maxN) 
     if (list[k] in output): 
      print("skipped") 
     else: 
      print("included")  

included 
skipped 
included 
included 
included 

>>> output=[] 
>>> list=[[], [9, 10], [1, 2, 8, 13], [0, 3, 6, 14], [5, 7, 11], []] 
>>> for l in list: 
     for i in range(len(l)): 
     for j in range(i+1,len(l)): 
      output.append([l[i],l[j]]) 


>>> output 
[[9, 10], [1, 2], [1, 8], [1, 13], [2, 8], [2, 13], [8, 13], [0, 3], [0, 6], [0, 14], [3, 6], [3, 14], [6, 14], [5, 7], [5, 11], [7, 11]] 

獲得輸出列表之後,你可以簡單地用「in」關鍵字的幫助下嘗試

0

我不知道我明白你想要做什麼。我把你的問題看成是,你正在試圖查看一個列表,看看它的任何元素是否在任何次要列表中。如果是這樣,你想要做類似如下(注意我改變了你的變量my_list,在蟒蛇叫什麼list是危險的,因爲你不能再使用它來進行實際名單)

my_lists=[[], [9, 10], [1, 2, 8, 13], [0, 3, 6, 14], [5, 7, 11], [],] 
n_sub_lists = len(my_list) 

for k in range(0,n_sub_lists): 
    for i in my_lists[k]: 
     for j in range(k, len(n_sub_lists)): 
      if i in my_lists[j]: 
       continue 
      else: 
       foo() 

我也刪除你的MaxN變量,因爲我不確定它的目的。如果我錯了,請有意見,我會更新適當

+0

爲什麼-1?.... – sedavidw

+0

這並不完全回答我的問題,但我不是那個低調的人。 –

相關問題