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]