1.1 用if选择执行语句
1.1.1 if基础
if语句的作用是选择执行语句,其最简单的形式如下:
if <条件> : <语句>语句> 条件>
或
if <条件> : <语句1> else: <语句2>语句2> 语句1> 条件>
或
if <条件1> : <语句1> elif <条件 2> : <语句2> else: <语句3>语句3> 语句2> 条件> 语句1> 条件1>
1.1.2 if语句的嵌套
if <条件> : if <条件> : #此句开始的以后共4行都属于第一个if条件的嵌套,注意及缩进量大小 <语句1> elif <条件> : <语句2> else: <语句3>语句3> 语句2> 条件> 语句1> 条件> 条件>
1.2 用for循环执行语句
1.2.1 for基础
for语句的形式如下:
for <循环变量> in <遍历对象> : <语句1> else: <语句2>语句2> 语句1> 遍历对象> 循环变量>
for i in [1,2,3,4,5]: #i是循环变量,每次循环,i会依次取得后面列表中一个值 print (i,"的平方是:",i*i) #此处理缩进的语句就是循环体 else: #for循环正常结束时其后缩进的语句就会执行 print ('循环结束!')
1.2.2 for语句与break语句、continue语句
1. break语句作用是中断循环的执行,如果在for循环中执行了break语句,for语句的遍历就会立即终止,即使还有未遍历完的数据,还是会立即终止for循环语句。
2. continue语句作用是提前停止循环体的执行,开始下一轮循环。在for语句中如果执行了continue语句,则continue语句后的循环体语句不会被执行,即提前结束了本次循环,然后进入下一个遍历循环。for i in [1,2,3,4,5]: print(i) if i == 2: #当i等于2时,执行其后缩进的continue语句 continue #执行本语句后,其后的if语句和print()不会执行 print (i,"的平方是:",i*i) if i == 4: #当i等于4时,执行其后缩进的break语句 break #执行break时,终止循环else: #因为for循环中的break语句执行中断了for循环 print ('循环结束!')
adct = {'apple':15,'banana':20,'pear':35} for key, value in adct.items(): #同时遍历键和值 也可以使用 元组 列表 字符串 的赋值遍历 print (key,':',value) for key in adct.keys(): #只遍历键 print(key) for value in adct.values(): #只遍历值 print (value)
1.2.3 for语句与range()函数
for语句中的对象集合可以是列表、字典以及元组等,也可以通过range()函数产生一个整数列表,以完成计数循环。range()函数的原型如下:
range( [start,] stop[, step])
其参数含义如下:
- start 可选参数,起始数,默认值为0;
- stop 终止数,如果range只有一个参数x,那么range生产一个从0至x-1的整数列表;
- step 可选参数,步长,即每次循环序列增长值。
-
产生的整数序列的最大值为stop-l。
for i in range(0,7,2): print (i)
range()
函数并不是在调用时一次生成整个序列,而是遍历一次才产生一个值,以减少内存的占用,其本质是一个迭代器
例题:计算并输出由用户指定的两个整数之间所有素数
x = (int (input ("请输入开始值(整数):")),int(input("请输入一个结束值(整数):"))) #输入两个整数,并放入一个元组中x1 = min (x) #获取两个整数中较小的一个整数x2 = max(x) #获取两个整数中较大的一个整数for n in range (x1, x2+1): #用range()产生从x1至x2的序列 for i in range(2,n): #用range()产生从2至当前值n-1的序列 if n % i == 0: #如果余数为0则执行其后缩进的break语句,中断内循环 break else: #循环中断,则表明至少有一个整数因子,不是素数,不输出 print (n,"是素数。")
1.2.4 for语句与内置迭代函数
内置迭代函数 | 使用说明 |
---|---|
enumerate (seq ) | 编号迭代在迭代时既返回序列中的元素,又返回该元素在序列中的编号(编号从0开始)。 |
sorted (seq) | 先遍历序列中较小的值,后遍历序列中较大的值,当然这要求序列中的数据可以是排序的同类数据 |
reversed (seq) | 翻转迭代从尾至头进行遍历 |
zip (seql,seq2,...) | 并行迭代同时遍历函数中给出的seql、seq2等序列中同一序号的元素,并行迭代函数中序列值的长度不一致时,只遍历到最短的序列的长度。 |
for i,item in enumerate('abcd'): print ('第%d个字符是:%s' % (i,item))
for i in sorted([3,1,6,0]): print(i)
lsta = (1,2)lstb = (3,4)lstc = (5, 6, 7)for i,j,k in zip (lsta, lstb, lstc): print ('%d:%d:%d' % (i,j,k))
1.3 用while循环执行语句
1.3.1 while基础
while语句的基本形式如下:
while <条件> : <语句1> else: <语句2> #如果循环未被break终止,则执行 语句2> 语句1> 条件>
alst = [1,2,3,4,5]total = len (alst) #获取列表中元素总数i =0 #初始化循环控制变量while i < total: #i从0至total-1 print (i+1,"的平方是:",alst [i] *alst[i]) i=i+1 #修改循环控制变量else: print ('循环结束!')
1.3.2 增量赋值运算符
基本的运算符都有对应的增量赋值运算符:
+、-、*、/、//、**、%、&、|、^、>>、<<
基本写法形如:
`x += 1`
1.4 推导或内涵(list comprehension)
列表、元组、字典等结构数据类型给使用大量数据带来极大的方便,但可能你还需要对序列中的数据进行处理得到另一组数据序列,本节介绍从一个序列类型的数据集推导出另一个序列类型的数据集。
1.4.1 推导基础
在Python中是指以紧凑的方式对列表、元组、字典等序列或一系列的元素进行处理,处理结果仍然被放到一个列表、字典等序列之中的语法形式。
典型的列表推导基本形式如下:
[ for i in aiterator]
- aiterator是指一个可遍历的对象,比如列表、元组,也可以是range()函数。其语义为:用循环变量i去遍历aiterator,并且将i相关表达式的值放入一个列表中。
1.4.2 推导进阶
列表推导式和字典推导式不仅可以对遍历的元素进行全部处理,还可以使用if语句实现有选择地处理遍历序列中的元素。其基本形式如下:
[ for i in aiterator if <条件> ] {key_exp:value_exp for key_exp,value_exp in aiterator if <条件> } 条件> 条件>
如果要获得一个1~10中所有数的平方,且平方值为偶数的一个列表,就可以使用如下代码来实现:
square_odd = [i**i for i in range (1, 11) if i**i %2 == 1]
对于字典推导式也可以使用if来进行部分元素的处理。
如果在推导式中的求值表达式或条件表达式中应用函数,则可以构造更加复杂的推导式来实现对序列中的数据进行批量的处理.