Python中if-else的多种写法

a, b= 1, 2 将a和b两个变量中的最大值赋值给c

(1)常规写法

if a>b:

c = a

else:

c = b

(2)表达式

c = a if a>b else b

(3)二维列表

c = [b,a][a>b]

(4)逻辑赋值

c = (a>b and [a] or [b])[0]

分析:

1、2为程序的基本语法不讨论

3:首先a>b的取值为True或False,而在python中True的默认值为1False的默认值为0。

可得c = [b, a][1]或[b, a][0],即从列表中按下标索引的方式取值给c。

4:首先在Python中,对于逻辑运算符and 、or :

and: x and y 返回的结果是决定表达式结果的值。根据"短路"原则当x为真时决定表达式的真假由y的值决定,所有返回y;如果x为假则不进行y的判断,返回x。

or: x or y 当x为真直接返回x的值;当x为假、y为真时返回y的值;当全为假时返回y的值。

所以当在式子中:

当 a>b为真:a>b and [a] 即为真,不在进行or的判断,返回[a]

当 a>b为假:a>b and [a] 即为假,返回[b]

再对列表[a]或[b]进行按下标0进行取值,得到a或b。

时间: 2024-12-09 10:06:01

Python中if-else的多种写法的相关文章

JavaScript中匿名函数的多种写法

匿名函数没有实际名字,也没有指针,怎么执行滴?  其实大家可以看看小括号的意义就应该可以理解.小括号有返回值,也就是小括号内的函数或者表达式的返回值,所以说小括号内的function返回值等于小括号的返回值,不难理解 (function(){})()可以将没有名字的函数执行了把- 关于匿名函数写法,很发散~ 最常见的用法: 代码如下: (function() { alert('water'); })(); 当然也可以带参数: 代码如下: (function(o) { alert(o); })('

Python中的赋值、浅拷贝、深拷贝

在理解浅拷贝和深拷贝之前,首先要理解学习一下变量在Python中是怎样存储的: 变量的类型是分值引用与地址引用两种. python的一切变量都是对象,变量的存储,采用了地址引用的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身. 在Python中,是有多种数据类型:bool.int.long.float.string.list.dict.tuple.set; 其中可分为基本数据类型和复杂数据结构: 基本数据类型:bool.int.long.float.string; 复杂数据结

关于python中赋值、浅拷贝、深拷贝之间区别的深入分析

大家都知道,在python中复制一个对象有多种方法,其中常用的是赋值.浅拷贝和深拷贝,这三者之间有哪些区别和哪些坑呢? 首先,定义一下: 赋值:  a =1    b =a    a赋值给了b 浅拷贝: a = []  b = a.copy() 或者import copy             b = copy.copy(a) 深拷贝:import copy  a = []   b = copy.deepcopy(a) 未完待续

Python 中的异常处理

Python 中内置了多种异常处理方式. 1 try····except··· a = 10 b = 0 try: i = a/b except Exception, e: print e >>> integer division or modulo by zero # 先执行try语句块的内容,若能正常执行,则略过except内容:若try语句块不能正常运行,则紧跟着执行except语句块内容: a = 10 b = 0 try: i = a/b except Exception, e

列表[‘hello’ , ‘python’ ,’!’ ] 用多种方法拼接,并输出’hello python !’ 以及join()在python中的用法简介

列表['hello' , 'python' ,'!' ] 用多种方法拼接,并输出'hello python !' 使用字符串链接的四种方法都可以创建 字符串拼接一共有四种方法,也可以应用到列表的拼接中 a = ['hello','python','!'] 第一种是用类似字符串相加的方法 #a[0] + ' ' + a[1] + ' ' + a[2] 第二种是用%s 连接起来 #'%s %s %s'%(a[0],a[1],a[2]) 第三种是用 join 连接起来 '''这里先普及join()在p

Python中7个不一样的代码写法

打印index 对于一个列表,或者说一个序列我们经常需要打印它的index,一般传统的做法或者说比较low的写法: 更优雅的写法是多用enumerate 两个序列的循环 我们会经常对两个序列进行计算或者处理,比较low的方法是用下标去循环处理 更优雅一点的方法:用zip轻松搞定 有没有更优雅的方法呢,比如如果两个序列有10000的长度,当然有的用izip 当然izip还是Py2.x时代的产物,现在Py3.6里面默认zip都是izip了! 交换变量 多个变量之间的交换,相信很多有c,c++语言基础

他山之石,calling by share——python中既不是传址也不是传值

事情是这样的,Python里是传址还是传值令人疑惑,限于本人没有C基础,所以对大家的各类水平层次不一的解答难以确信. 第一个阶段: 在读<python基础教程第二版>的时候感到疑惑,然后群友解答(略敷衍),接着就是知乎上提问(感谢大家的热心回答,但我很晚才收到推送) 虽然是某天早晨睡不着,翻看公众号的时候看见一篇<不要再问 "Python 函数中,参数是传值,还是传引用?" 这种没有意义的问题了>的文章,初步释疑惑(但后来我觉得他的说法虽然形象,但是不准确) 第

无意学会了python中and和or的有趣用法

今天看书,无意中看到了Python的and和or的一个有趣用法,最后在网上查找这种用法的机制,归根结底还是要仔细理解python中and和or的机制. Python中if-else有多种写法.假设a=10,b=20,取较大者. 最常规的方法是: if a > b:     c = a else:     c = b 稍微高级一点的用法就是用表达式 c = a if a > b else b 我就是经常用这种方法. 再高级一点的用法就是用二维列表 c = [a,b][a<b] 这方法也很好

Python中GBK, UTF-8和Unicode的编码问题

编码问题,一直是使用python2时的一块心病.几乎所有的控制台输入输出.IO操作和HTTP操作都会涉及如下的编码问题: UnicodeDecodeError:‘ascii’codec can’t decodebyte0xc4inposition10:ordinalnotinrange(128) 这究竟是是个什么东西?!有时稀里糊涂地用一坨encode(),decode()之类的函数让程序能跑对了,可是下次遇到非ASCII编码时又悲剧了. 那么Python 2.x中的字符串究竟是个什么呢? 基本