Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从列表列表中删除列表?_Python_Performance_List_Python 3.x - Fatal编程技术网

Python:从列表列表中删除列表?

Python:从列表列表中删除列表?,python,performance,list,python-3.x,Python,Performance,List,Python 3.x,我有固定的发言权 char={'J','A'} 还有一张名单 content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9]] 我正在尝试删除列表内容中没有'J'和'A' 我所做的是 li = list(char) char1= np.array(li) content=np.array(content) new_content=[] for alphabet in content: if alphab

我有固定的发言权

char={'J','A'}
还有一张名单

content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9]]
我正在尝试删除列表
内容中没有
'J'和'A'
我所做的是

li = list(char)
char1= np.array(li)
content=np.array(content)
new_content=[]
for alphabet in content:
    if alphabet[1] in char1:
        new_content.append(alphabet)
print(new_content)
有什么有效的写作方法吗?如果
char
content
没有更多的元素,那么计算需要很长时间

content=[[1,'J',2],[2,'K',3],[2,'A',3],[3,'A',9],[5,'J',9]]
content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9]]
whitelist = {'J','A'}

remove = set()
for i,sub in enumerate(content):
    if sub[1] not in whitelist: remove.add(i)

content = [sub for i,sub in enumerate(content) if i not in whitelist]
白名单={'J','A'} i=0
而我会这样写

char={'J','A'}
content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9]]

filter(lambda x: all([i in char for i in x]), content)
content
中包含“J”和“A”的所有列表:

>>> [x for x in content if all(c in x for c in char)]
[]
content
中包含“J”或“A”的所有列表:

>>> [x for x in content if any(c in x for c in char)]
[[1, 'J', 2], [2, 'A', 3], [3, 'A', 9], [5, 'J', 9]]

... 为什么在那里使用
np.array
numpy
在执行向量操作时非常有效,但您只是在循环。问题有点不清楚。是否要删除
content
中包含“J”或“A”的所有列表?是否要删除
content
中包含“J”和“A”的所有列表?是否要从
content
中的每个列表中删除“J”和“A”?@StevenRumbalski:否。如果从列表中弹出一个项目,则不希望增加索引,因为以前位于索引
n+1
的内容将位于
pop
之后的索引
n
@StevenRumbalski:true。你应该把它贴出来作为答案
>>> [x for x in content if all(c in x for c in char)]
[]
>>> [x for x in content if any(c in x for c in char)]
[[1, 'J', 2], [2, 'A', 3], [3, 'A', 9], [5, 'J', 9]]
content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9]]
whitelist = {'J','A'}

content = [sub for sub in content if sub[1] not in whitelist]