Python第三天
用 for 循环或者 while 循环时,如果要在循环体内直接退出循环,可以使用 break 语句。
sum =0 x=0 while True: sum=sum+x x=x+1 if x>100: break print sum
>>>
5050
例子:利用 while True 无限循环配合 break 语句,计算 1 + 2 + 4 + 8 + 16 + ... 的前20项的和。
sum = 0 x = 1 n = 1 while True: if n>20: break sum =sum+x x=x*2 n=n+1 print sum
在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。
L = [75, 98, 59, 81, 66, 43, 69, 85] sum = 0.0 n = 0 for x in L: if x < 60: continue sum = sum + x n = n + 1 print sum/n
对已有的计算 0 - 100 的while循环进行改造,通过增加 continue 语句,使得只计算奇数的和:
sum = 0 x = 0 while True: x = x + 1 if x > 100: break if x % 2 == 0: continue sum = sum + x print sum
Python之 多重循环
for x in ['1','2','3','4','5','9']: for y in ["A","B","C","D","E","F"]: print x+y
>>>
1A
1B
1C
1D
1E
......
例子:
对100以内的两位数,请使用一个两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)。
for x in [1,2,3,4,5,6,7,8,9]: for y in [0,1,2,3,4,5,6,7,8,9]: if x<y: print x*10+y >>> 12 13 14 15 16 17 18 19 23 24 25 26 27 28 ... 89
Python之什么是dict
我们已经知道,list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字:
['Adam', 'Lisa', 'Bart']
或者考试的成绩列表:
[95, 85, 59]
但是,要根据名字找到对应的成绩,用两个 list 表示就不方便。
如果把名字和分数关联起来,组成类似的查找表:
'Adam' ==> 95 'Lisa' ==> 85 'Bart' ==> 59
给定一个名字,就可以直接查到分数。
Python的 dict 就是专门干这件事的。用 dict 表示“名字”-“成绩”的查找表如下:
>>> d ={ 'Adam':95, 'Lisa':85, 'Bart':59 } >>> len(d) 3
因此,dict大小为3。
直接通过名字查询
d ={ 'Adam':95, 'Lisa':85, 'Bart':59 } print d['Bart'] >>> 59
注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
要避免 KeyError 发生,有两个办法:
一是先判断一下 key 是否存在,用 in 操作符:
if 'Paul' in d: print d['Paul']
如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。
二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:
>>> print d.get('Bart') 59 >>> print d.get('Paul') None
Python中dict的特点
dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。
dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样:
>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> print d {'Lisa': 85, 'Adam': 95, 'Bart': 59}
打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
dict是可变的,也就是说,我们可以随时往dict中添加新的 key-value。比如已有dict:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
要把新同学'Paul'的成绩 72 加进去,用赋值语句:
>>> d['Paul'] = 72
再看看dict的内容:
>>> print d {'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}
如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value:
>>> d['Bart'] = 60 >>> print d {'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 60}
由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key:
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
... print key
...
Lisa
Adam
Bart
由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。
由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key:
>>> for key in d: print key >>> Lisa Tom Adam Bart
用 for 循环遍历如下的dict,打印出 name: score 来。
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
通过d[key]获取对应的value。
d ={ 'Adam':95, 'Lisa':85, 'Bart':59 } for key in d: print key+':',d[key] >>> Lisa: 85 Adam: 95 Bart: 59

浙公网安备 33010602011771号