Skip to main content
 首页 » 编程设计

python之从列表python中删除两个连续的元素

2025年05月04日10yyy_WW

从列表中删除连续元素时出现问题。 例如我有一个列表;

['aaaaa', '@someword', '@otherword','bbbb',...] 

我想从列表中删除具有@char 的元素。

a = ['aaaaa', '@someword', '@otherword','bbbb'] 
for word in a: 
    if '@' in word: 
        print("found @ in word :" +word) 
        a.remove(word) 

输出是; (只找到第一个元素,跳过第二个。)

found @ in word :@someword 

如果我在这个元素之间添加一些值;

a = ['aaaaa', '@someword', 'qqqq', '@otherword','bbbb'] 

它捕获了其中的两个;

found @ in word :@someword 
found @ in word :@otherword 

我调试代码,如果有连续的一些词包括@char,删除函数跳过第二个,因为删除过程后索引发生变化。

我怎样才能删除这些词?

请您参考如下方法:

您可以使用列表理解来根据条件过滤掉元素:

>>> original = ['aaaaa', '@someword', '@otherword','bbbb'] 
>>> filtered = [item for item in original if '@' not in item] 
>>> filtered 
['aaaaa', 'bbbb'] 

或替换它们:

>>> replaced = [item if '@' not in item else '' for item in original] 
>>> replaced 
['aaaaa', '', '', 'bbbb'] 

参见 documentation获取更多信息。希望对您有所帮助!