- 主题:求教一个“逐步生成list元素”的问题
需求:
要判断一个对象是否符合很多个条件,每个条件的判断结果有OK、REJECT、DUNNO三种
目前的写法是:
results = {judge.__name__: judge(x) for judge in plugins.plugins_list}
开发过程中,发现面对某些特殊的输入,其中一些判断条件会执行出错。
我在plugins_list开头安排了黑白名单机制,放在正经干活的判断函数之前,想要短路这
个执行过程。但是,因为既要判断OK又要判断REJECT,所以我只好先收集执行结果,再判
断是否有OK/REJECT,否则就需要执行两遍了,浪费
if OK in results
if REJECT in results
因为先收集结果,所以导致了并不能实现“短路掉后续几个判断函数”的期望
所以想请教一下,如果想要实现这个功能,且写法简洁,应该怎么办呢?
--
FROM 139.226.178.*
是不是可以map啊any啊什么的搞一下?
具体怎么写呢?
【 在 JulyClyde 的大作中提到: 】
: 需求:
: 要判断一个对象是否符合很多个条件,每个条件的判断结果有OK、REJECT、DUNNO三种
: 目前的写法是:
: ...................
--
FROM 139.226.178.*
是不是太痴迷dict comprehension写法了?
如果正经循环一下,是不是就可以短路跳出了?
但是总感觉用循环写起来好长啊
【 在 JulyClyde 的大作中提到: 】
: 需求:
: 要判断一个对象是否符合很多个条件,每个条件的判断结果有OK、REJECT、DUNNO三种
: 目前的写法是:
: ...................
--
FROM 139.226.178.*
或者用memoize decorator包一下,就不担心执行两遍的问题了
【 在 JulyClyde 的大作中提到: 】
: 需求:
: 要判断一个对象是否符合很多个条件,每个条件的判断结果有OK、REJECT、DUNNO三种
: 目前的写法是:
: ...................
--
FROM 139.226.178.*
{k: v for x in l if condition}
这个 dict comprehension 后面可以加个 if 语句的。
【 在 JulyClyde 的大作中提到: 】
: 需求:
: 要判断一个对象是否符合很多个条件,每个条件的判断结果有OK、REJECT、DUNNO三种
: 目前的写法是:
: ...................
--
FROM 183.253.143.*
真没看懂……
【 在 JulyClyde (我的月份又来了) 的大作中提到: 】
: 发信人: JulyClyde (我的月份又来了), 信区: Python
: 标 题: 求教一个“逐步生成list元素”的问题
: 发信站: 水木社区 (Thu Oct 19 19:29:03 2023), 转信
:
--
FROM 124.217.189.*
啥叫短路这个执行过程?
实在不行,就分两遍判断吧,两遍if也不算重复。
越烧脑子的写法越不好理解。
【 在 JulyClyde 的大作中提到: 】
: 需求:
: 要判断一个对象是否符合很多个条件,每个条件的判断结果有OK、REJECT、DUNNO三种
: 目前的写法是:
: ...................
--
FROM 221.216.197.*
咋写呢?感觉应该是不能在这里if吧
【 在 hgoldfish 的大作中提到: 】
: {k: v for x in l if condition}
: 这个 dict comprehension 后面可以加个 if 语句的。
--
FROM 139.226.178.*
前边如果有结果,后边就不执行了
【 在 seablue 的大作中提到: 】
: 啥叫短路这个执行过程?
: 实在不行,就分两遍判断吧,两遍if也不算重复。
: 越烧脑子的写法越不好理解。
: ...................
--
FROM 139.226.178.*
itertools.takewhile ?
【 在 JulyClyde 的大作中提到: 】
: 需求:
: 要判断一个对象是否符合很多个条件,每个条件的判断结果有OK、REJECT、DUNNO三种
: 目前的写法是:
: ...................
--
FROM 125.118.102.*