条件语句
if语句
python中的if语句和其他编程语言中的结构相同,由三部分组成:
- if关键字。
- 用于判断结果真假的条件表达式。
- 当表达式为真或非零时执行的代码。
单个if语句可以使用and、or、not实现多重条件的判断。
若执行的代码块仅有一行,则可以与if语句放在一行。
else语句
和其他语言一样,python也提供了与if配套使用的else语句。
要注意的是,python使用缩进而不是花括号来标记代码的边界。使用缩进可以让程序员自己决定else属于哪一个if,增加代码的准确性和易读性。
elif(else-if)语句
elif是python中的else-if语句,可以检查多个表达式是否为真,if语句最多只能有一个else,但可以有多个elif。
条件表达式
与c/c++不同,python中并没有三目运算符,取而代之的是X if C else Y
k=3
x=3 if (k>5) else 2
print(x)
循环语句
while语句
while语句是一个条件循环语句,与if相比,if在为真后将执行一次,而while将一直循环直到条件不为真。
要注意while会产生无限循环的情况,通常无限循环会造成大量内存使用而导致程序瘫痪,但是在某些情况例如服务器就是通过无限循环来等待客户端的连接,客户端向服务器发送请求,服务器处理请求,python网络基础将在后面章节讨论。
for语句
for循环会访问一个可迭代的对象中的所有元素,并在所有条目都处理过后结束循环.
- 通过序列项迭代:for i in list
- 通过序列索引迭代:for i in range(len(list))
- 使用项和索引迭代:for i, name in enumerate(list)
range()函数:
- range(start, end, step=1),数字从start开始到end结束,每次递增step。
- 简略写法:range(end),range(start,end)。
- xrange()类似于range(),适用于在用一个很大范围的列表时,xrange不会再内存创建列表的完整拷贝,只被用在for中,在for外没有意义,性能高于range。
break语句
break语句可以结束当前循环然后跳至下一条语句,与C/C++中的bireak没有区别。
continue语句
程序遇到continue语句时,将会终止当前循环,并忽略剩余语句,回到循环顶端,继续下一次条件判断。
pass语句
与C/C++不同,python中还提供了pass语句。python中没有使用传统的大括号来标记代码块,有时,有些地方在语法上要求要有代码来表示不做任何事,例如,在Python中如果写了if expression但不写冒号后的代码,就会报错,此时就需要用pass。
迭代器和iter()函数
迭代器为类序列对象提供了一个类序列的接口,迭代器对列表和字典的迭代带来性能上的增强。
根本上说,迭代器就是有一个next()方法的对象,而不是通过索引来计数。当你或是一个循环机制需要下一个项时,调用迭代器的next()方法就可以获得它。
迭代器也有一些限制:例如不能向后移动、不能回到开始也不能复制一个迭代器。
迭代器的使用:
myTuple=(1,123,'abc',3.3)
i=iter(myTuple) #创建迭代器
print(i.__next__()) #python3在这里用_next_()函数替代next()
print(i.__next__())
在使用迭代器的时候,应当尽量避免修改容器,例如在循环时删除元素。
列表解析
列表解析来自函数式编程语言Haskell,在之前的章节有提到过,基本语法是:
[expr for iter_var in iterable]
这个语句的核心是for循环,它迭代iterable对象的所有条目,前边的expr应用于序列的每个成员,最后结果值时该表达式产生的列表。
例如:[x**2 for x in range(6)] -> [0,1,4,9,16,25]
列表解析的扩展版本:
[expr for iter_var in iterable if cond_expr]
例如:[x for x in seq if x%2]
生成器表达式
生成器表达式是列表解析的一个扩展,列表解析的一个不足就是必要生成所有的数据,用以创建整个列表,这可能对大量数据的迭代器有负面效应,例如磁盘文件。生成器表达式的语法与列表解析基本相同,不过它并不真正创建一个列表,而是返回一个生成器(generator)。生成器使用括号代替方括号。
下一章将对python的函数思想以及函数式编程进行讲解。
来源:CSDN
作者:叫我小韩就好了
链接:https://blog.csdn.net/furio000/article/details/103919843