pythonifelse简化_简化“if…elif..else”条件
如果能有效地使用“if”、“elif”和“else”也不错。但总的来说,你的问题的答案将取决于个人情况。在
不过,说到这里,一种方法是将您的条件放入dict(正如您在标记中突出显示的那样)。在
以下是几个例子:
作为dict:conditions = {
1: 'One',
2: 'Two',
3: 'Three',
4: 'Four',
5: lambda x: x**2 # Can be substituted with actual functions defined elsewhere.
}
x = 3
if x in conditions.keys():
print(conditions[x])
退货:
^{pr2}$
或者对于函数:x = 5
if x in conditions.keys():
func = conditions[x]
print(func(x))
退货:25
使用类似于switch...case的函数:
为了使其更清楚,并具有类似于switch...case语句的内容,可以执行以下操作:def switch(case):
conditions = {
1: 'One',
2: 'Two',
3: 'Three',
4: 'Four',
5: lambda x: x**2
}
return condition[case] if case in conditions else False
它是这样运行的:>>> print(switch(2))
2
或者对于不存在的项目:>>> print(switch(6))
False
在您的示例中实现:
switch...case函数装饰器(包装器)
为了解决您添加的示例,我们可以执行以下操作:
首先,我们需要一个通用开关/外壳装饰器:def switch_case(switch):
def switcher(func):
def case(case):
return switch[case](case) if case in switch else None
return case
return switcher
然后,我们需要一本关于我们的条件的字典,如您的示例所示:# Define the conditions in a dict.
conditions = {
'd': lambda x: True if 'd' else False, # You can say: True if 'a' or 'b' else False
'c': lambda x: True if 'c' else False
}
现在,我们根据您的条件创建一个装饰开关盒函数:@switch_case(conditions)
def my_conditions(case):
return case
然后我们指定元素,或者从文件、数据库或任何东西读取它们:# Elements to be tested as string.
# It can be any flattened (not nested) iterable (str, tuple, list, numpy.array, etc.)
myDict = {'a': ['b', 'c'], 'b': ['c', 'd']}
elements = sum(myDict.values(), []) # Returns a flattened lists of values.
根据条件计算元素(生成器对象)。在verdicts = map(my_conditions, elements)
将元素与相应的计算结果(生成器对象)匹配。在status = zip(elements, verdicts)
现在我们可以积极地调节输出(丢弃Nonevlue)并创建一个dict,其中键是元素,值是它们的条件状态。在passed = {key+'flag': val for key, val in status if val is not None}
print(passed)
# output: {'cflag': True, 'dflag': True}
作为变量添加到命名空间
此时,您可以按原样使用dict;但是,如果您坚持要将dict添加到名称空间中,下面是方法:# Rename values and add them to the name space.
locals().update(passed)
试验
最后,让我们测试并确保这些值存在于本地命名空间中(请注意,我们之前没有实现这些名称中的任何一个)。因此,如果条件返回序列中特定字符的True值,则会创建一个变量:>>> print(dflag) # We had 'd' in `myDict` values.
True
在另一个had中,如果条件返回None,则命名空间中没有值。在>>> print(aflag) # We didn't have 'a' in `myDict` values.
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in ()
24
---> 25 print(aflag)
NameError: name 'aflag' is not defined
注意:在现有结构下,如果条件返回False,则在命名空间中创建一个变量,并为其赋值False。在
希望这有帮助。在
pythonifelse简化_简化“if…elif..else”条件相关推荐
- 微信小程序在url简化_简化对Web应用程序的数据分析
微信小程序在url简化 数据(Analytics / ML)到应用程序-零痛苦 (Data (Analytics/ML) to App - with zero pain) We all want to ...
- get set方法简化_简化开放科学的4种方法
get set方法简化 具有讽刺意味的是,谈到开放您的工作时,有一个秘密. 这就是:在开放式科学,开放源代码软件或任何其他开放社区中开放都是很难的. 有时,它可能比被关闭更难. 为了吸引更多的人参与这 ...
- rdlc报表 矩形高固定_固定资产管理系统_简化资产管理流程
随着企业经营范围的不断拓展,企业每年都投入大量费用来购置各种资产,但随时间推移,企业在资产管理中往往会出现下列情况: 1.不清楚资产的使用状态.位置.使用人,资产利用效率低,重复购置现象严重. 2.资 ...
- 二分法算法复杂度简化_让我们简化算法的复杂性!
二分法算法复杂度简化 by Shruti Tanwar 通过Shruti Tanwar 让我们简化算法的复杂性! (Let's simplify algorithm complexities!) It ...
- python代码该怎么简化_如何简化这个python代码(从书中分配)?
我在学习 "Python for Everybody" 这本书是由查尔斯R.Severance和我写的,从第7章开始,我有一个问题要问练习2. 任务是通过 mbox-short.t ...
- java 简化判断_简化Java内存分析
java 简化判断 作为一名典型的Java开发人员,除了遵循关闭连接,流等典型的最佳实践外,我从未监视过应用程序的内存使用情况.最近,我们在JBoss服务器中遇到了一些问题,不得不深入研究内存管理Ja ...
- 微信小程序物联网应用_简化物联网应用程序入门的提示
微信小程序物联网应用 by Sofia Coppol 索非亚·科普波尔(Sofia Coppol) 简化物联网应用程序入门的提示 (Tips for a Smoother Internet of Th ...
- python0表示剪刀_简化Python代码(石头、纸张、剪刀)
我是一个完全的python新手,这是我关于stackoverflow的第一个问题,请耐心等待:) 所以为了得到一些过度,我试着用Python编写我自己的石头.布.剪刀游戏.然而,我的代码相对其他岩石, ...
- docker适合初学者吗_简化了Docker:面向绝对初学者的动手指南
docker适合初学者吗 by Shahzan 由Shahzan Whether you are planning to start your career in DevOps, or you are ...
最新文章
- wget: command not found 解决方案
- JavaScript-4.2函数,变量作用域---ShinePans
- UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 8-8: Non-BMP character not sup
- java.lang.NumberFormatException: multiple points错误问题
- 【gRPC】ProtoBuf 语言快速学习指南
- Android-JNI编程-图文解析
- git学习(七)新建远程仓库-Gitee为例
- [javascript] 完全开源,开心分享 HTML5 Canvas 在线图片处理《imageMagic》(single page app)开发详解[1]...
- c语言 字符串转整型
- redis实战【西橙先生】
- java宠物商店_Java如何实现宠物商店管理 Java实现宠物商店管理代码示例
- 在阿里云服务器上安装常用应用
- oracle导入blob出错,oracle导出blob,clob出错的问题
- HoloLens2语音指令实现
- 【quill-editor】富文本编辑器对图片的放大缩小拖拽的实现
- 各类暴力事件频发,究竟是为何?
- 四人小组项目(对项目进行的修改与重写)
- ajax请求生命周期方法
- 大家都来学 Java(一)快乐入门
- 走进Spring Cloud之二 eureka注册中心(Greenwich版本)