使用三元运算符过滤字符串

Filter Strings Using Ternary operator

我需要知道为什么我的 option1 有效而 option2 无效。 我不追求列表理解解决方案或替代答案。

Option1 :这有效并给出 [23, 23, 34] 这正是我所期望的

list(filter(lambda x: True if x>9 else False, [1,23,23,34]))

Option2 没有 work.Please 注意我有多个字符串要检查列表

list(filter(lambda x: True if x in ('red', 'oh') else False, ['fred', 'john', 'Nick']))

选项 2 的预期输出是:

['fred', 'john']
True if x in ('red', 'oh') else False

看看x。如果x是"Fred",x在"red"中是not("red"在"Fred"中) 你想要的恰恰相反。

True if 'red' in x or 'oh' in x else False

总行是

list(filter(lambda x: True if 'red' in x or 'oh' in x else False, ['fred', 'john', 'Nick']))

虽然不漂亮,但您可以使用任意数量的字符串来做到这一点:

names = ['fred', 'john', 'nick']
subs = ['red', 'oh']
list(filter(lambda x: True if any([y in x for y in subs]) else False, names))