从列表中删除连续元素时出现问题。 例如我有一个列表;
['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获取更多信息。希望对您有所帮助!
