2015-06-24 148 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

这并不完全回答我的问题,但我不是那个低调的人。 –

相关问题