Python: 移除列表中的列表?

2024-04-23 23:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一套说法

char={'J','A'}

还有一份名单

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

我正在尝试删除列表content中没有'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)

有什么有效的写作方法吗?如果charcontent没有更多的元素,那么计算需要很长时间。你知道吗


Tags: in列表newforifnplicontent
3条回答
content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9]]
whitelist = {'J','A'}

i = 0
while i<len(content):
    if content[i][1] not in whitelist:
        blacklist.pop(i)
        continue
    i += 1
>>> content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9]]
>>> char={'J','A'}

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]]
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]

相关问题 更多 >