如何从python中以前缀开头的列表中删除字符串

2024-10-05 13:18:57 发布

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

我有这个字符串列表和一些前缀。我想从列表中删除以这些前缀开头的所有字符串。我试过:

prefixes = ('hello', 'bye')
list = ['hi', 'helloyou', 'holla', 'byeyou', 'hellooooo']
for word in list:
    list.remove(word.startswith(prexixes)

所以我希望我的新单子是:

list = ['hi', 'holla']

但我有个错误:

ValueError: list.remove(x): x not in list

怎么了?


Tags: 字符串inhello列表forhiremovelist
3条回答

格雷格的解决方案肯定更像是Python式的,但在你最初的代码中,你的意思可能是这样的。请注意,我们创建了一个副本(使用list[:]语法)并对该副本进行迭代,因为在迭代列表时不应修改该列表。

prefixes = ('hello', 'bye')
list = ['hi', 'helloyou', 'holla', 'byeyou', 'hellooooo']
for word in list[:]:
    if word.startswith(prefixes):
        list.remove(word)
print list
print len([i for i in os.listdir('/path/to/files') if not i.startswith(('.','~','#'))])

您可以创建一个新列表,其中包含所有以您的前缀开头的单词:

newlist = [x for x in list if not x.startswith(prefixes)]

代码不起作用的原因是startswith方法返回一个布尔值,并且要求从列表中删除该布尔值(但列表包含字符串,而不是布尔值)。

请注意,通常不建议命名变量list,因为这已经是预定义的list类型的名称。

相关问题 更多 >

    热门问题