Python 骚操作之条件判断 | Python 主题月

简介: Python 语言里有许多的高级特性。虽然很高级,但是不易理解。 在团队合作里,炫技是大忌, 简单明了才是长久之计。

Python 语言里有许多的高级特性。虽然很高级,但是不易理解。 在团队合作里,炫技是大忌, 简单明了才是长久之计。


举一个栗子


这是一段非常简单的通过分数判断成绩是否及格的代码,由于代码行数过多,有些人就不太愿意这样写,因为这体现不出自己多年的 Python 功力。


if score > 60:    return "及格" else:    return "不及格"
复制代码


下面我列举了五种这段代码的变异写法,一个比一个骚。


不知道这些高级用法的人,一定会看得一脸懵逼,理解了之后,又不经意大呼:卧槽,还可以这样写?。


然后就要开始爆粗口了:这TM给人看的代码?


第一种

语法:


<expression 1> if <condition> else <expression 2> 
复制代码


例子


>>> score1 = 80
>>> score2 = 50
>>> 
>>> 
>>> msg1 = "及格" if score1 > 60 else "不及格"
>>> print msg1
及格
>>> 
>>> msg2 = "及格" if score2  > 60 else "不及格"
>>> print msg2
不及格
>>>
复制代码


第二种

语法


<expression> and <on_true> or <on_false>
复制代码


例子


>>> msg1 = score1 > 60 and "及格" or "不及格"
>>> msg2 = "及格" if score2 > 60 else "不及格"
>>> 
>>> print(msg1)
及格
>>> 
>>> print(msg2)
不及格
复制代码


第三种

语法


("false", "true")[condition]
复制代码


例子


>>> msg1 = ("及格", "不及格")[score1 > 60]
>>> print(msg1)
及格
>>> 
>>> 
>>> msg2 = ("及格", "不及格")[score2 > 18]
>>> print(msg2)
不及格
复制代码


第四种

语法


(lambda: <on_false>, lambda:<on_true>)[<condition>]()
复制代码


例子


>>> msg1 = (lambda:"不及格", lambda:"及格")[score1 > 60]()
>>> print(msg1)
及格
>>> 
>>> msg2 = (lambda:"不及格", lambda:"及格")[score2 > 60]()
>>> print(msg2)
不及格
复制代码


第五种

语法


{True: <on_true>, False: <on_false>}[<condition>]
复制代码


例子


>>> msg1 = {True: "及格", False: "不及格"}[score1 > 60]
>>> print(msg1)
及格
>>> 
>>> msg2 = {True: "及格", False: "不及格"}[score2 > 60]
>>> print(msg2)
不及格
复制代码


第六种

语法


((<condition>) and (<on_true>,) or (<on_false>,))[0]
复制代码


例子


>>> msg1 = ((score1 > 60) and ("及格",) or ("不及格",))[0]
>>> print(msg1)
及格
>>> 
>>> msg2 = ((score2 > 60) and ("及格",) or ("不及格",))[0]
>>> print(msg2)
不及格
复制代码


以上代码,都比较简单,仔细看都能看懂。


真是活久见,学了这么久的 Python ,竟然有这么多骚操作。


这六种写法里,最推荐使用的是第一种,自己也经常在用,简洁直白,代码行数还少。

相关文章
|
6月前
|
数据采集 自然语言处理 算法
如何使用Python的Gensim库进行自然语言处理和主题建模?
使用Gensim库进行Python自然语言处理和主题建模,包括:1) 安装Gensim;2) 导入`corpora`, `models`, `nltk`等相关模块;3) 对文本数据进行预处理,如分词和去除停用词;4) 创建字典和语料库;5) 使用LDA算法训练模型;6) 查看每个主题的主要关键词。代码示例展示了从数据预处理到主题提取的完整流程。
162 3
|
6月前
|
存储 Python
Python 的其他主题:解释 Python 中的命名空间(Namespace)是什么?
Python 的其他主题:解释 Python 中的命名空间(Namespace)是什么?
69 2
|
6月前
|
Python
Python 的其他主题:什么是 Duck Typing?Python 中如何使用 Duck Typing?
Python 的其他主题:什么是 Duck Typing?Python 中如何使用 Duck Typing?
50 0
|
4月前
|
Python
Python中条件判断错误
【7月更文挑战第16天】
54 1
|
4月前
|
数据采集 自然语言处理 大数据
​「Python大数据」LDA主题分析模型
使用Python进行文本聚类,流程包括读取VOC数据、jieba分词、去除停用词,应用LDA模型(n_components=5)进行主题分析,并通过pyLDAvis生成可视化HTML。关键代码涉及数据预处理、CountVectorizer、LatentDirichletAllocation以及HTML文件的本地化处理。停用词和业务术语列表用于优化分词效果。
216 0
​「Python大数据」LDA主题分析模型
|
6月前
|
Python
Python 的其他主题:Python 中的 `__init__.py` 文件有什么作用?
Python 的其他主题:Python 中的 `__init__.py` 文件有什么作用?
75 1
|
6月前
|
开发工具 Python
国外的大学图书馆也像国内的一样吗?用Python脚本抓取期刊的主题标题!
国外的大学图书馆也像国内的一样吗?用Python脚本抓取期刊的主题标题!
|
6月前
|
自然语言处理 数据可视化 算法
Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组数据集
Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组数据集
|
6月前
|
Python
Python 高级主题:什么是 Python 中的装饰器函数?
Python装饰器是一种特殊函数,用于在不修改原代码的情况下为函数增添功能。它们接收一个函数作为参数并返回一个新的函数,常在原函数前后添加额外操作。例如,`outer`装饰器会在`foo`函数执行前后打印信息并修改其返回值。调用`foo()`实则执行了装饰后的`inner`函数。
29 5
|
6月前
|
JavaScript 前端开发 Python
Python 高级主题: 解释 Python 中的闭包是什么?
【4月更文挑战第13天】闭包是内部函数引用外部变量的函数对象,作为外部函数的返回值。当外部函数执行完毕,其变量本应消失,但由于内部函数的引用,这些变量在内存中保持存活,形成闭包。例如,在外函数中定义内函数并返回内函数引用,实现对外部局部变量的持久访问。闭包在Python和JavaScript等语言中常见,是强大的编程工具,连接不同作用域并允许局部变量持久化,用于复杂程序设计。**
31 4