【问题标题】:removing a sublist if a string in the sublist contains a substring (all values within all sublists are strings)如果子列表中的字符串包含子字符串,则删除子列表(所有子列表中的所有值都是字符串)
【发布时间】:2021-12-31 18:15:34
【问题描述】:

给定嵌套列表:mistake_list = [['as','as*s','sd','*ssa'],['a','ds','dfg','mal']]

所需输出:corrected_list = [['a','ds','dfg','mal']]

现在给定列表可以包含数百或数千个子列表,其中的字符串可能包含也可能不包含特殊字符 *,但如果包含特殊字符,则必须删除整个子列表。

我在上面展示了一个示例,其中mistake_list 是输入嵌套列表,corrected_list 是输出嵌套列表。

注意:所有子列表都有相同数量的元素(我认为没有必要知道这一点)

【问题讨论】:

    标签: python list substring list-comprehension nested-lists


    【解决方案1】:

    filter 函数可以帮助您:

    mistake_list = [['as','as*s','sd','*ssa'],['a','ds','dfg','mal']]
    corrected_list = list(filter(lambda l: not any("*" in x for x in l), mistake_list))
    
    print(corrected_list)
    
    [['a', 'ds', 'dfg', 'mal']]
    

    【讨论】:

      【解决方案2】:

      您可以使用列表推导:

      mistake_list = [['as','as*s','sd','*ssa'],['a','ds','dfg','mal']]
      
      corrected_list = [sublst for sublst in mistake_list if not any('*' in s for s in sublst)]
      print(corrected_list) # [['a', 'ds', 'dfg', 'mal']]
      

      这里的过滤条件检查sublst的每一项中是否有'*'字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-23
        • 2023-03-28
        • 2021-06-24
        • 2021-06-25
        • 2017-11-27
        • 1970-01-01
        相关资源
        最近更新 更多