[英]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.