有点复杂的列表理解

2024-09-26 17:50:06 发布

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

我需要过滤一个二维数组

[
  [1, 'eth0', 'description', ...],
  [2, 'virbr0', 'description', ...],
  [3, 'qvb25f982e4-ae', 'description', ...],
  [4, 'tap25f982e4-ae', 'description', ...],
...
]

基本上我想过滤掉某些接口名称。我过滤掉以q开头的接口,如下所示:

info = [i for i in info if not i[1].startswith('q')]

但我需要能够定义一个要忽略的接口前缀列表,例如:

exclude = ['q','tap']
info = [i for i in info if not i[1].startswith(exclude)]

但我好像搞不懂这样的逻辑。你知道吗


Tags: ininfo名称forifnot数组description
1条回答
网友
1楼 · 发布于 2024-09-26 17:50:06

你太接近了!。把exclude变成一个元组

exclude = ('q','tap')
info = [i for i in info if not i[1].startswith(exclude)]

documentation

... prefix can also be a tuple1 of prefixes to look for....


演示:

>>> info = [
...   [1, 'eth0', 'description'],
...   [2, 'virbr0', 'description'],
...   [3, 'qvb25f982e4-ae', 'description'],
...   [4, 'tap25f982e4-ae', 'description'],
... ]
>>> 
>>> exclude = ('q','tap')
>>> info = [i for i in info if not i[1].startswith(exclude)]
>>> 
>>> info
[[1, 'eth0', 'description'], [2, 'virbr0', 'description']]

我加了重点…

相关问题 更多 >

    热门问题