gpt4 book ai didi

python - 过滤和修改列表理解中的字符串

转载 作者:行者123 更新时间:2023-12-01 09:10:24 25 4
gpt4 key购买 nike

我有一个使用列表推导式过滤字符串列表中的元素的代码。像这样:

def get_items(items):
return [item for item in items if not item.startswidth('some_prefix') and not (item == 'bad_string' or item.endswith('bad_postfix') of 'bad_substr' in item) and not ites.endswidth('another_bad_postfix')]

现在我不仅想要过滤,还想要修改项目,并为每个项目应用此逻辑:

if item.startswith('./'):
item = item[2:]

执行此操作的 Pythonic 方法是什么?显然,我可以将其从理解重写为简单的循环,例如:

for item in items:
res = []
if not item.startswidth('some_prefix') and not (item == 'bad_string' or item.endswith('bad_postfix') of 'bad_substr' in item) and not ites.endswidth('another_bad_postfix'):
break
if item.startswith('./'):
item = item[2:]
res.append(item)

但是看起来真的很难看。还有更优雅的吗?

最佳答案

您可以将其塞入理解中:

return [item[2:] if item.startswith('./') else item for item in ...

但是请注意,以这种方式编写的理解有点难以阅读。您可以在单独的函数中分离出项目标准:

def item_is_good(item):
return( not item.startswidth('some_prefix') and
not (item == 'bad_string' or
item.endswith('bad_postfix') of
'bad_substr' in item) and
not item.endswidth('another_bad_postfix') )

转换理解

[item[2:] if item.startswith('./') else item for item in items if item_is_good(item)]

关于python - 过滤和修改列表理解中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51706165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com