在列表中找到一个字符串并替换

yod*_*ish 1 python list

我遇到的帖子演示了如何在列表中找到一个字符串并替换,但我很难将搜索概括为一个字符串.

例如

listX = ['color green', 'shape circle', 'above t']
Run Code Online (Sandbox Code Playgroud)

我想找到所有以'above'开头的字符串,我已经能够使用any并留下以下空间对列表进行一些最小的搜索,'above '但我无法弄清楚如何替换我找到的内容.

我正在尝试创建的输出将是:

['color green', 'shape circle', 'above']
Run Code Online (Sandbox Code Playgroud)

我还想弄清楚如何从列表中一起删除以'above'开头的字符串.

AGN*_*zer 6

['above' if x.startswith('above') else x for x in listX]
Run Code Online (Sandbox Code Playgroud)

如果您想删除所有以字符串开头的字符串,'above'那么您可以执行类似@JonClements在评论中提到的内容:

[x for x in listX if not x.startswith('above')]
Run Code Online (Sandbox Code Playgroud)

或者:

from itertools import filterfalse
list(filterfalse(lambda x: x.startswith('above'), listX))
Run Code Online (Sandbox Code Playgroud)

  • 然后OP的Q的第二部分将是`[x表示x中的x,如果不是x.startswith('above')]我猜 (3认同)