python核心编程&条件判断与循环

来源:互联网 发布:专柜mac口红多少钱 编辑:程序博客网 时间:2024/05/23 19:16

1 条件判断语句

1.1 if单一条件判断语句

if expression:    expre_true_suite

1.2 if多重条件判断语句

单个if语句可以通过使用布尔操作符andornot实现多重条件判断

1.3 else判断语句

if expression:    expr_true_suiteelse:    expr_false_suite

对于python语法而言,else语句还可在while和for循环中使用else语句。在循环使用时,else子句只在循环完成后执行,也就是说break语句也会跳过else块。

1.4 elif语句

if expression1:    expr1_true_suiteelif expression2:    expr2_true_suite

对于某些可以使用python字典的搜索操作,应优先选择使用字典搜索。因字典的搜索操作比类似if-elif-else语句或是for循环这样的序列查询要快

1.5 条件表达式(三元操作符)

X if C else Y>>> smaller = x if x < y else y

2 循环语句

2.1 while语句

while expression:    suite_to_repeat

2.2 for语句

for语句可以遍历序列成员,并可以用在列表解析生成器表达式中,它会自动地调用迭代器的next()方法,捕获StopIteration异常并结束循环。

for iter_var in iterable:    suite_to_repeat

利用for语句迭代序列有三种基本方法:
1、通过序列项迭代

for item in list:    suite

2、通过序列索引迭代

for item in range(len(list)):    suite

3、通过项和索引迭代

for num,value in enumerate(list):    suite

3 内建函数

3.1 range()

range(start, end, step=1)

虽然range()看起来像是一个条件循环,但实际上range()先用指定的条件生成一个列表,然后把列表用于这个for语句

3.2 xrange()

xrange()的作用与range()相似。但它不会在内存里创建列表的完整拷贝,只能被用在for循环中使用。其性能远高于range(),因其不生成整个列表。使用遍历时,xrange()每次只返回一个值。

其他内建函数

与序列相关的函数还有以下几种:
sorted()、reversed()、enumerate()、zip()

4 其他辅助语句

4.1 break语句

break语句可以结束当前循环然后跳转到下条 语句,可以用于while和for循环语句。

4.2 continue语句

当遇到continue语句时,程序会终止当前循环,并忽略剩余语句,然后回到循环的顶端。在开始下一次迭代前,如果是条件循环,将验证条件表达式,如果是迭代循环,将验证是否还有元素可以迭代。只有在验证成功后,才会开始迭代。

4.3 pass语句

pass语句不做任何操作

5 迭代器和iter()函数

在学习迭代器之前,需要明确几个定义:可迭代对象、迭代器
可迭代对象(Iterable)是指可以被直接作用于for循环的对象,可以通过isinstance()判断

isinstance([],Iterable)

迭代器(Iterator)是指可以被next函数调用并不断返回下一个值的对象,亦可以通过isinstance()判断

isinstance([],Iterator)

迭代器继承自可迭代对象,可迭代对象包含_ iter ,而迭代器不仅包含 iter ,还包含 next _方法,因此所有的可迭代对象均可通过内置函数iter()转变成迭代器,却不能被next()函数调用。

5.1 序列迭代器

myTuple = (123, 'xyz', 45.67)fetch = iter(myTuple)while True:    try:        i = fetch.next()    except StopIteration:        break

5.2 字典迭代器

字典迭代器会遍历它的键(keys),即语句for eachKey in myDict.keys()可以缩写为for eachKey in myDict。
同时,字典中有三个内建方法来定义迭代:
myDict.iterkeys():通过keys迭代
myDict.itervalues():通过values迭代
myDict.iteritems():通过key/value对来迭代

5.3 文件迭代器

文件迭代器会自动调用readline()方法,循环访问文本文件的所有行。

5.4 创建迭代器

对一个对象调用iter()可以得到它的迭代器。语法如下:

iter(obj)iter(func, sentinel)

当你传递一个参数给iter()时,它会检查你传递的是不是一个序列。如果是,根据索引从0一直迭代到序列结束。另一个创建迭代器的方法是使用类
如果是传递两个参数给iter(),它会重复调用func,直到迭代器的下个值等于sentinel

值得注意的是:
在迭代可变对象时,不能修改它们。详情请见下方
myDidct = {'a':1,'b':2,'c':3,'d':4}
for eachKey in myDict:
print eachKey, myDict[eachKey]
del myDict[eachKey]
在上述例子中,程序试图在迭代中删除键名为eachKey的条目,此时字典的大小将会发生改变。这是python程序所不允许的。

6 列表解析

[expr for iter_var in iterable][expr for iter_var in iterable if cond_expr]

列表解析的一个不足是必会生成所有的数据,用以创建整个列表。这对有大量数据的迭代器有负面效应。而生成器可以很好的解决这个问题
生成器与列表解析相似,但它并不真正创建数字列表,而是返回一个生成器。这个生成器在每次计算出一个条目后,把这个条目产生出来。

(expr for iter_var in iterable if cond_expr)
0 0
原创粉丝点击