我有一个列表子列表,我想搜索并检查两个单独的元素是否在同一个子列表中。例如,以随机顺序列出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,将全部跳过,并且将在列表的其余部分执行操作foo。
我试过了:
for k in range(0,MaxN):
for i in list[k]:
if list[i]==list[i+1]:
print 'skipped'
else:
print 'included'
但我得到一个列表索引超出范围错误,我似乎不明白。
答案 0 :(得分:1)
试试这个:
>>> 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
答案 1 :(得分:0)
我不确定我明白你要做什么。我读了你的问题,你正试图查看一个列表,看看它的任何元素是否在任何后续列表中。如果是这样,你想要做类似以下的事情(注意我将你的变量更改为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
变量,因为我不确定它的用途。如果我在那里弄错了,请发表评论,我会更新