python - 查找列表并从列表中删除列表

标签 python list

我一直在尝试找到一些可以完成我想做的事情的帖子,但我找不到任何东西。

我已经得到了这个列表,即

rows =
[['Jan 31', ' 2014 19:48:30.096606000', '0x10', '0x00000000', '0x0f7864ef', '0x0f7864f1', '', 'blahblah', 'other \n'], 
['Jan 31', ' 2014 19:48:30.829329000', '0x10', '0x00000000', '0x0f920978', '0x0f92097a', '', 'blahblah', 'anotherr \n']]

我需要找到并从第 5 个项目搜索的列表中删除一个列表,如下所示:

search == '0x0f7864ef'
if any(e[4] == search for e in rows):

如果搜索到的变量存在,那么我得到一个 True,但我不知道如何从“行”中删除它。执行类似 rows.remove(e) 的操作只会返回错误

我尝试循环遍历一组并在找到时删除,但出现错误。另外,我宁愿不必循环遍历集合/列表。这是我尝试过的:

>>> a = {( '1','da','vi' ), (2,'be','vi') }
>>> for item in a:
...   if 'da' in item:
...     a.remove(item)
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: Set changed size during iteration
>>> a
set([(2, 'be', 'vi')])

尽管该项目已被删除,我还是收到了错误...

谢谢!

最佳答案

只需创建一个包含已过滤项目的新列表,如下所示:

new_list = [item for item in rows if search not in item]

这是一个列表理解,它是一个计算结果为列表的表达式。编写上述代码的较长方法是在 for + if 循环中,如下所示:

new_list = []
for item in rows:
   if search not in item:
       new_list.append(item)

修改正在循环的列表是非常糟糕的做法,这就是为什么标准做法是创建一个新列表;使用列表理解或更传统的循环。

关于python - 查找列表并从列表中删除列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810482/

相关文章:

c - 使用列表内存 - 家庭作业

python - 在高级情况下使用 spacy 识别句子中的主语

python - 如何从python中的sql中减去日期

Python - 两个列表之间的差异

java - 比较 2 个字符串,看看它们是否包含共同项

html - 使用 CSS 显示不同的元素名称

python - Pandas - 将字符串更改为数字

Python Mechanize 阻止连接 :Close

Python:根据连续相同的值将列表拆分为索引

python - 遍历Python中的列表列表