代码之家  ›  专栏  ›  技术社区  ›  JamesHudson81

基于列表元素生成列表列表

  •  1
  • JamesHudson81  · 技术社区  · 5 年前

    所以我有一个清单1和一个清单1,对于这个例子,我将把它简化为:

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

    我想检查一下清单1中的元素是否在清单1的任何一个清单中 然后将该子列表附加到名为list_的新列表中。

    预期输出为:

    [['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
    

    注:列表1中元素的n_数远远大于列表1中的列表

    1 回复  |  直到 5 年前
        1
  •  1
  •   PeptideWitch    5 年前

    看起来像 break 命令过早地停止了列表检查对列表1的迭代。

    要重新配置代码:

    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)