繁体   English   中英

检查列表 Python 的同一个子列表中是否存在两个元素

[英]Check whether two elements exist in same sublist of a list Python

我有一个列表子列表,我想搜索并检查两个单独的元素是否在同一个子列表中。 例如,有 16 个随机顺序的列表元素:

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], [6, 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'

但是我得到一个列表索引超出范围错误,我似乎不明白。

尝试这个:

>>> 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 ”关键字尝试:

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

included
skipped
included
included
included

我不确定我是否理解你想要做什么。 我读你的问题是,你试图查看一个列表,看看它的任何元素是否在任何后续列表中。 如果是这样,您想要执行以下操作(注意我将您的变量更改为my_list ,在 python 中调用某些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变量,因为我不确定它的用途。 如果我弄错了,请发表评论,我会适当更新

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM