我有一个list1
元组的3个子列表的列表
[[(['A', 'B', 'A'], ['B', 'O', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'O']),
(['A', 'B', 'O'], ['B', 'O', 'A']),
(['A', 'B', 'O'], ['B', 'A', 'O']),
(['A', 'B', 'A'], ['B', 'O', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'O'])],
[(['A', 'B', 'A'], ['B', 'A', 'A']),
(['A', 'B', 'O'], ['B', 'A', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'A'])],
[['A', 'B', 'A'], ['A', 'B', 'O']],
[['A', 'B', 'B']],
[['B', 'A', 'A']]]
假设list2 = ['A', 'B', 'A'].
我的目标是获取包含该元组的任何成对元组(或一组单例元组)的索引列表。我尝试按以下方式使用该函数,但结果不正确list1
list2
enumerate
print([i for i, j in enumerate(bigset) if ['A', 'B', 'A'] in j[0] or
['A', 'B', 'A'] == j[0] or [['A', 'B', 'A']] in j[0]])
谁能帮我解决这个问题?由于出现在中的元组的不同大小的元组不匹配,我感到非常困惑list1
。
另一个问题我已经是:我想要找的三元素列表的总数在list1
。因此,如果我用手做,答案是22
。但是,如何在代码中做到这一点呢?我猜我们需要使用两个for
循环吗?
预期输出对于list1
上面给出的list2
,我们将获得包含list2
is的索引列表[0,1,5,6,7,9,10]
。
好,那你去
之所以使用递归,是因为我们不知道您list1
SO的深度,索引将像这样计算:
0,1
2,3,4,
6,7
8,
9,10,11,12
等等...(与您在1行中写入的顺序相同)
结果将是:
[0, 2, 8, 10, 12, 16, 18]
现在的代码
def foo(l,ref):
global s
global indexes
for items in l: #if it's an element of 3 letters
if len(items)== 3 and len(items[0])==1:
if items == ref:
indexes.append(s) #save his index if it match the ref
s+= 1 #next index
else: #We need to go deeper
foo(items,ref)
return(s)
list1 = [[(['A', 'B', 'A'], ['B', 'O', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'O']),
(['A', 'B', 'O'], ['B', 'O', 'A']),
(['A', 'B', 'O'], ['B', 'A', 'O']),
(['A', 'B', 'A'], ['B', 'O', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'O'])],
[(['A', 'B', 'A'], ['B', 'A', 'A']),
(['A', 'B', 'O'], ['B', 'A', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'A'])],
[['A', 'B', 'A'], ['A', 'B', 'O']],
[['A', 'B', 'B']],
[['B', 'A', 'A']]]
list2 = ['A', 'B', 'A']
indexes = []
s=0
count= foo(list1,list2)
print(indexes)
s
是我们正在处理的索引count
是元素(22)的总数。Indexes
是您想要的索引列表。
即使您制作了list3 = [list1,list1,[list1,[list1],list1]]
,这项工作也可以尝试。
祝您好运,现在就结束脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句