首页 > 解决方案 > 根据列表的元素生成列表列表

问题描述

所以我有一个 list1 和一个 list_of_list1,对于这个例子,我将它简化为:

list1=['a','cs','akdf']
list_of_list1=[['cs','kdddd','wwww'],['a','papa','lsl'],['jdk','asas'],['akdf', 'ffff','pep8']]

我想检查 list1 中的元素是否在任何 list_of_list1 中,然后将该子列表附加到一个名为 list_with_structures 的新列表中。

所需的输出将是:

[['a','papa','lsl'],['cs','kdddd','wwww'],['akdf', 'ffff','pep8']]

这是我的代码:

list_with_structures=[]
for sublist in list_of_list1:
    for valores in list1:
        if valores in sublist:
            list_with_structures.append(sublist)
            break
list_with_structures

注意:list1 中元素的 nº 远大于 list_of_list1 中的列表

标签: pythonlist

解决方案


看起来该break命令过早地阻止您的列表检查通过 list1 进行迭代。

要重新配置您的代码:

for sublist in list_of_list1:
    for valores in list1:
        if valores in sublist:
            list_with_structures.append(sublist)

为了可读性,我建议:

for item in list1:
    for sublist in list_of_list1:
        if item in sublist:
            list_with_structures.append(sublist)

推荐阅读