繁体   English   中英

删除包含特定元素的最后一个嵌套列表

[英]Remove last nested list that contains specific element

因此,我有一个很大的嵌套列表,需要执行以下操作:

查找包含特定元素的列表的数量,如果该数量大于2,请在第二个之后删除所有这些列表。

所以一个基本的例子:

el = 'ABCfrog'

input = [['ABCdog','a','b'],['ABCfrog','sadg','aseas','ww'],['ABCfrog','dd','ee','ww'],['ABCfrog','dsf','aseas','r','13451v51'],['ABCfrog','3452'],['ABCmouse','xx',],['ABCorange','324213v4']]

output = [['ABCdog','a','b'],['ABCfrog','sadg','aseas','ww'],['ABCfrog','dd','ee','ww'],['ABCmouse','xx',],['ABCorange','324213v4']]

尝试:

generic_list = []
for i in input:
    if el in i:
        generic_list.append(i)
number = len(generic_list)

if number>2:
    input.something...

该算法应该起作用-它会在循环遍历子列表时保留该元素被查看的次数,并且仅在该子列表是包含该元素的前两个子列表之一时才将子列表追加到输出中,或者完全不包含元素。 我认为,如果我理解正确,这就是您要记住的逻辑。

el = 'ABCfrog'
inputs = [['ABCdog','a','b'], ['ABCfrog','sadg','aseas','ww'], ['ABCfrog','dd','ee','ww'],  ['ABCfrog','dsf','aseas','r','13451v51'], ['ABCfrog','3452'],['ABCmouse','xx',], ['ABCorange','324213v4']]

outputs = []
count = 0
for i in inputs:
    if el in i and count < 2:
        outputs.append(i)
        count += 1
    elif el not in i:
        outputs.append(i)

顺便说一句,请注意,我改名为你的input变量inputs ,以避免覆盖内置函数input

这应该工作:

output = []
counter = 0
for sub_list in input:
    if counter >= 2:
        break
    if el in sub_list:
        counter += 1
        output.append(sub_list)
print(output)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM