使用三元运算符过滤字符串
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))
我需要知道为什么我的 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))