从列表中删除第一个符合条件的元素

5

假设我有一个字符串列表:

first item
second item
# first commented item
third item
# second commented item

如何从列表中删除第一个以#开头的项目?

预期结果:

first item
second item
third item
# second commented item
2个回答

7
>>> items = ["First", "Second", "# First", "Third", "# Second"]
>>> for e in items:
...     if e.startswith('#'):
...             items.remove(e)
...             break
... 
>>> items
['First', 'Second', 'Third', '# Second']

2
使用 for i, e in enumerate(items)items.pop(i) 会使其稍微更有效率。 - Sven Marnach
@Sven:timeit 值:对于 for e in items 是 1.2 秒,对于 enumerate 是 1.7 秒。 - user225312
@jackson:优化重要吗?我甚至没有针对它进行优化,我更注重可读性。 :-) - user225312
1
在一个很长的列表上尝试一下,其中以#开头的第一项接近末尾。这是唯一需要考虑性能的情况。 - Sven Marnach
1
你正在修改你正在迭代的列表。在这种情况下,由于你立即中断,所以可以,但一般来说这是一个非常糟糕的想法。 - yoniLavi

1
items = ["First", "Second", "# First", "Third", "# Second"]
for i in xrange(len(items)):
    if items[i][0] == '#':
        items.pop(i)
        break
print items

如果列表中存在空字符串,则此操作将失败。 - Sven Marnach
1
只需使用 items[i].startswith('#') - Idan K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接