流程控制--for循环遍历字典和列表

一、循环 1.Python中一共有2个循环,一个是for 循环一个是while 循环。 2.for循环是一个结构,导致程序要重复一定得次数。 while循环也是如此,当条件变为假,循环结束。 二、for循环 1.在代码中 for语句包含以下部分 for 关键字 一个变量名 in关键字 调用range()方法,最多可以传入3个参数 冒号 例如 for i in range(1,11) print i
流程控制--for循环遍历字典和列表
文章图片

在显示的结果的是一竖下来,要想把结果显示在同一行中的话 可以在print i加个,号 这样可以显示在一行。 流程控制--for循环遍历字典和列表
文章图片

因为print这个参数默认是会带换行符的。
2.range()方法 range()的开始,停止,和步长参数。 某些参数可以用多个参数调用。参数之间用逗号分开,range()就是其中之一。 range(12,16) 第一个数是开始的值,第二个是上限。但不包含它,也就是停止的数字。 运行后会从12开始到15结束。 range(0,10,2) 第三个参数就是步长,步长是每次迭代后循环变量增加的值。 所以结果是0 2 4 6 8. 甚至可以用复数作为步长参数,让循环计数逐渐减少,而不是增加。
3.列表重写 首先看一个例子: for i in range(1,11): if i % 2 == 0 print i 这个代码的结果就是打印偶数,当i除2等与0 就是求偶数。 流程控制--for循环遍历字典和列表
文章图片

其实这段代码可以用一行代码来实现 print [i for i in range(1,11) if i % 2 ==0] 流程控制--for循环遍历字典和列表
文章图片

在print 中加中括号,来表示输出的是一个列表
for i in [i for i in range(1,11) if i % 2 ==0] print i, 流程控制--for循环遍历字典和列表
文章图片

这就是列表重写,先对列表进行一个遍历,遍历得到的值可以进行运算,然后还可以加条件来输出想要的内容。
4.求1到100相加的和 sum = 0for i in range(1,101) sum = sum +i //还可以这样写 sum += i 效果是一样的。 print sum
5.xrange()方法 xrange()和range 方法操作非常相似,但不同的是rang()是返回一个列表,但是xrange()返回的是一个对象。 流程控制--for循环遍历字典和列表
文章图片

如何取值呢? 把xrange赋值给一个变量 ,用for循环遍历就可以得到数值 流程控制--for循环遍历字典和列表
文章图片

xrange的用处是,可以占少量的内存, 比如range(1000) 会产生999个数值,占大量内存, 但是xrange(1000) 就不会。当进行对他遍历的时候就会有大量内存产生了 一般用xrange好一点。 三、遍历字典 1.先看一个简单的例子: a = {'a': 1, 'b':2} for i in a: print i 这是一个简单的打印字典的key值。如果要打印value值, for i in a: print i,a[i] 这样就可以取到key和value值。 流程控制--for循环遍历字典和列表
文章图片

这是第一种方式。 2.使用items()方法来遍历。 for i in a.items(): print i 流程控制--for循环遍历字典和列表
文章图片

变成了元祖的形式,变成了元祖形式 就可以用2个变量接收他的值 for k,v in a.items(): print k,v 流程控制--for循环遍历字典和列表
文章图片

3.使用iteritems()方法 iteritems()方法和xrange方法相似,也是返回一个对象。 流程控制--for循环遍历字典和列表
文章图片

使用for循环来遍历效果和items一样的。 for k,v in a.iteritems(): print k,v 流程控制--for循环遍历字典和列表
文章图片

4.制作九九乘法表 for i in xrange(1,10): for j in xrange(1,i+1): print "%s x %s = %s" %(i,j,j*i), print 写法思路:第一层循环是取9行,九九乘法表就是有9行,先固定行数 第二层内层循环,定义的是变量j的循环次数,用xrange方法来定义次数 当i 为1 时 xrange 取1 ,2 取1. i 为2时,xrange取1,3 取了2个数,以此类推。 当print 出来结果后 会出现换行现象,像这样。 流程控制--for循环遍历字典和列表
文章图片

打印很多行,所以要加个抑制换行符,来取消空格,在第一层循环里加一个print 来增加换行符效果就出来了。 流程控制--for循环遍历字典和列表
文章图片

习题 1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 for x in xrange(1,5):
for y in xrange(1,5):
for z in xrange(1,5):
if (x!=y) and (x!=z) and (y!=z):
print "%s%s%s" %(x,y,z),
流程控制--for循环遍历字典和列表
文章图片

2. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 for i in xrange(100,1000): b = (i / 100) % 10 //取百位数 c = (i / 10) % 10 //取十位数 z = (i / 1) % 10 //取个位数 if i == b**3 + c**3 +z**3: print i

3. 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

for a in 'xyz': for b in 'xyz': for c in 'xyz': if a != 'x'and b != 'x' and b!='z': if a != b and a != c and b!= c: print "a vs %s b vs %s c vs %s " %(a,b,c)

结果是: a vs z b vs y c vs x

    推荐阅读