簡體   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