创建函数以从嵌套列表中删除某些元素

问题描述 投票:0回答:1

给出一个嵌套列表,例如[['N','L'],['G','N','L'],['N','B']],我想删除所有['N','L']的出现。我编写了以下代码来做到这一点。

def eliminate_elements(my_list, to_eliminate):
    '''
    To complete.
    '''

    for sub_list in my_list:
        for i in sub_list:
            if i in to_eliminate:
                sub_list.remove(i)

    return my_list  

[当我运行eliminate_elements([['N', 'L'], ['G', 'N','L'], ['N', 'B']], ['N','L'])时,我希望输出为[[],['G'], ['B']],尽管只删除了'N',而我的输出是[['L'], ['G', 'L'], ['B']]为什么当显然是to_eliminate中的一个元素时却不删除'L' ?请注意,我不想内置python函数来执行此操作,我必须创建自己的函数,该函数不依赖任何外部模块或函数。

python-3.x list
1个回答
0
投票
# your code goes here

def eliminate_elements(my_list, to_eliminate):
    '''
    To complete.
    '''

    for sub_list in my_list:
        for i in to_eliminate:
            if i in sub_list:
                occu = sub_list.count(i)
                for _ in range(occu):
                    sub_list.remove(i)

    return my_list  

print(eliminate_elements( [['N', 'L'], ['G', 'N', 'L'], ['N', 'B']],  ['N', 'L']))

输出

[[], ['G'], ['B']]
© www.soinside.com 2019 - 2024. All rights reserved.