python - 删除包含特定元素的最后一个嵌套列表
问题描述
所以我有一个很大的嵌套列表,我需要执行以下操作:
查找包含特定元素的列表的数量,如果该数量大于 2,则删除第 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...
解决方案
该算法应该可以工作 - 它会计算元素在子列表上循环时被看到的次数,并且仅当子列表是包含该元素的前两个子列表之一时才将子列表附加到输出中,或者不t 完全包含该元素。如果我理解正确,我认为这就是您想到的逻辑。
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
。
推荐阅读
- c++ - Why does dlib's neural net xml export contain different parameters for layers than specified by the trainer?
- lua - How to change the titlebar's bgimage scale
- java - Heroku Spring Boot start
- python - Python 单元测试相关函数
- javascript - Firebase:未定义 Firestore 事务?
- ember.js - 为“模型”钩子设置别名
- angular - 角度 routerLink 属性单击不适用于 nwjs
- python - openpyxl:TypeError:load_workbook()得到了一个意外的关键字参数“guess_types”
- python - Django - Signal.disconnect 不断开信号
- php - 将 1 天添加到一周中的每一天(星期一,星期二..)