流程控制--for循环遍历字典和列表
一、循环 1.Python中一共有2个循环,一个是for 循环一个是while 循环。 2.for循环是一个结构,导致程序要重复一定得次数。 while循环也是如此,当条件变为假,循环结束。 二、for循环 1.在代码中 for语句包含以下部分 for 关键字 一个变量名 in关键字 调用range()方法,最多可以传入3个参数 冒号 例如 for i in range(1,11) print i
文章图片
在显示的结果的是一竖下来,要想把结果显示在同一行中的话 可以在print i加个,号 这样可以显示在一行。
文章图片
因为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 就是求偶数。
文章图片
其实这段代码可以用一行代码来实现 print [i for i in range(1,11) if i % 2 ==0]
文章图片
在print 中加中括号,来表示输出的是一个列表
for i in [i for i in range(1,11) if i % 2 ==0] print i,
文章图片
这就是列表重写,先对列表进行一个遍历,遍历得到的值可以进行运算,然后还可以加条件来输出想要的内容。
4.求1到100相加的和 sum = 0for i in range(1,101) sum = sum +i //还可以这样写 sum += i 效果是一样的。 print sum
5.xrange()方法 xrange()和range 方法操作非常相似,但不同的是rang()是返回一个列表,但是xrange()返回的是一个对象。
文章图片
如何取值呢? 把xrange赋值给一个变量 ,用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值。
文章图片
这是第一种方式。 2.使用items()方法来遍历。 for i in a.items(): print i
文章图片
变成了元祖的形式,变成了元祖形式 就可以用2个变量接收他的值 for k,v in a.items(): print k,v
文章图片
3.使用iteritems()方法 iteritems()方法和xrange方法相似,也是返回一个对象。
文章图片
使用for循环来遍历效果和items一样的。 for k,v in a.iteritems(): print k,v
文章图片
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 出来结果后 会出现换行现象,像这样。
文章图片
打印很多行,所以要加个抑制换行符,来取消空格,在第一层循环里加一个print 来增加换行符效果就出来了。
文章图片
习题 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),
文章图片
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
推荐阅读
- 我的拖延症如何控制了我,又一次
- 迅捷流程图制作软件的使用方法!
- 真正的爱
- Python专栏|数据分析的常规流程
- 每天听本书《控制焦虑》
- 控制自己的心为什么这么难([追光日记(第2篇)])
- 《不要用爱控制我》
- 8、Flask构建弹幕微电影网站-搭建后台页面-密码修改、主页控制面板
- 2018-03-11|2018-03-11 存储过程
- 简述JavaEE学习流程