Python 根据列表中的相似项检查列表的索引,然后根据列表的维度追加到另一个列表中

Python 根据列表中的相似项检查列表的索引,然后根据列表的维度追加到另一个列表中,python,list,Python,List,[更新] 最近,我试图找到2D列表的索引。例如,我的输入如下: a = [["text", "man","chest","funny"],["cruel", "jut","for","teting"],["I", "take","this","for"],["learning", "purpose","only","please"] ] b = [["text", "funny"], ["cruel"],["I", "take", "for"],["learning", "purpose"]

[更新] 最近,我试图找到2D列表的索引。例如,我的输入如下:

a =  [["text", "man","chest","funny"],["cruel", "jut","for","teting"],["I", "take","this","for"],["learning", "purpose","only","please"] ]

b = [["text", "funny"], ["cruel"],["I", "take", "for"],["learning", "purpose"]]
我尝试使用下面的代码查找a和b具有相似项的索引。由于复制和粘贴,缩进可能错误,请相应调整:

store = []

for i in a:
    for u in i:
        for ii in b:
            for uu in b:
                for iu in uu:
                    if iu in u:
                        store.append(i.index(iu))
不知怎的,我的输出变成了这样:

现在输出:

store = [0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1]
我不明白为什么会出现这么多类似的指数

因为它应该是2D的。我想知道有没有办法做到这一点:

预期产出:

store = [[0,3],[0],[0,1,3],[0,1]]

请帮我解决这个问题。谢谢你

如果我正确理解了你的问题,这个就可以了

store = []  
for x,y in zip(a,b):
    store_x = [] 
    for i,xx in enumerate(x):
        if xx in y:
            store_x.append(i)
    store.append(store_x)
以及使用嵌套理解的难以阅读的一行代码

store = [[i for i,xx in enumerate(x) if xx in y] for x,y in zip(a,b)]
如果b只是一个字符串列表,而不是列表列表,而不是同时迭代a和b,那么您可以只迭代a:


有人能帮我吗?非常感谢你,先生。这就是我想要的。但我还有另外一个方法,我在上面编辑过。如果可能的话,你能告诉我为什么会这样吗?非常感谢。有一件事是,在尝试将整数添加到列表中时,您只需要将整数添加到列表中,但您需要一个列表列表,因此在迭代a的每个元素时,您必须创建一个不同的列表。您对b的迭代也太深了。我认为你的代码正在考虑一些事情,比如如果文本在条件中很有趣,现在我明白了。哦,是的,我正在测试另一件事,如果你有空,你也能在这件事上透露一些信息吗?如果我的b=[文本,有趣,残忍,我,采取,为,学习,目的]呢。如果是这种情况,我应该如何将代码更改为?谢谢你的时间。b只是一个平面列表,但a仍然是一个嵌套列表?
store = [[i for i,xx in enumerate(x) if xx in b] for x in a]