一、条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为(同一组必须对齐):
if 判断条件:
执行语句1
else:
执行语句2
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式:
if 判断条件1:
执行语句1
elif 判断条件2:
执行语句2
elif 判断条件3:
执行语句3
else:
执行语句4
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。
二、切片语法
Python的切片是特别常用的功能,主要用于对列表的元素取值。使用切片也会让你的代码显得特别Pythonic。
切片的主要声明如下,假设现在有一个list,命名为alist:
alist = [0,1,2,3,4]
切片语法的基本形式为:
alist[start:stop:step]
可以看出对于列表的切片操作有三个参数,分别为:
start:起始位置
stop:终止位置
step:步长
三个参数都是可选参数,意义为list的下标,即index。step参数默认值为1。表现形式有以下几种:
alist[start:stop]
alist[start:]
alist[:stop]
alist[:]
- 第一种方式指定了start与stop参数,从start指定的下标开始取alist的元素,直到stop-1,例如 a[1:3] 的结果为 [1,2] 。
- 第二种方式会从start指定的下标开始,取alist剩余元素。例如 a[1:] 会得到 [1,2,3,4] 。
- 第三种方式会从alist的开始,取list元素,直到下标为stop-1,例如 a[:4] 会得到结果 [0,1,2,3]
- 第四种方式没有指定start与stop参数,则会返回整个列表。
需要注意的是, :stop 表示不在选定切片中的第一个值, alist[start:stop] 的取值类似于数学中的取值范围为 [start, stop) , 所以在步长默认为1的情况下, start-stop 的结果即为所取元素的数量。
负值用法
start与stop参数为负值
start与stop的值可以是负值,表示取值是从list的最后开始,而不是开头。 例如:
alist[-1]
alist[-3:]
alist[:-1][2,3,4]
[0,1,2,3]
step参数为负值
step为负值时候表示将列表逆向,最简单的例子如下:
alist[::-1]
输出结果为 [4,3,2,1,0] 。这个例子实际是以下面的这个形式返回,
[alist[-1], alist[-1-step], ..., alist[0]]
即从倒数第一个元素开始,每一步加上步长,因为这里步长为负数,所以是减法,直到alist的开头。 知道这个原理,就能明白一些加上了start与stop参数的复杂写法,例如:
指定了start参数
alist[1::-1]
实际上是这样返回:
[alist[1], alist[1-step], ..., alist[0]]
因此,返回的是 [1,0]
指定了stop参数
alist[:1:-1]
实际上是这样返回:
[alist[-1], alist[-1-step], ..., alist[stop+1]]
因此,返回的是 [4, 3, 2] 。
同时指定了start与stop参数
注意,由于是逆序,所以start参数应该大于stop参数。
alist[3:1:-1]
实际上是这样返回:
[alist[start], alist[start-step], ..., alist[stop+1]]
因此,返回的是 [3,2]
我们可以看出,
- 如果指定了start参数,则从start参数index开始取元素,直到遇到stop下标或者list的第一个元素。
- 如果未指定start参数,则从list倒数第一个元素开始,直到遇到stop下标或者list的第一个元素。
总结
切片语法的使用特别灵活,如果正确掌握了它的用法,能够简化你的代码。需要注意的是,Python也提供了slice类用于制造切片,例如:
alist[start:stop:step]
实际上等价于
alist[(slice(start,stop,step))]