|
一、for循环简介循环就是重复做某件事,for循环是python提供第二种循环机制(第一种是while循环),理论上for循环能做的事情,while循环都可以做。for的语句格式如下:for in : 【循环体】注:通过for循环依次将中的数据取出赋值给,再通过【循环体】进行处理。例1:for循环访问列表#for循环访问列表代码:list=['张三','李四','王五']fori inlist: print(i)输出结果:张三李四王五注意:i这个变量是在for循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给i,然后执行for循环体。例2:for循环访问字典代码:dict={'张三':98,'李四':89,'王五':56}forkey,valueindict.items(): print(key,value)输出结果:张三98李四89王五56例3:for循环访问字符串#for循环访问字符串,可以依次读取每个字符代码:foreach in'Trkczx': print(each)输出结果:'T''r''k''c''z''x''运行运行二、for...else...(比较少用到)for...else...格式:for in : 【循环体】else: 【else的语句块】注:for遍历序列,无break结束当前循环,循环结束后执行else语句块例1:list=['张三','李四','王五']fori inlist: print(i)else: print('循环完整结束后执行')输出结果:张三李四王五循环完整结束后执行例2:list=['张三','李四','王五']fori inlist: print(i) ifi =='李四': break #break结束循环,for下的else也不会执行else: print('循环完整结束后执行')输出结果:张三李四例3:list=['张三','李四','王五']fori inlist: if =='李四': continue #continue跳过本次循环,进入下一次循环 print(i) #如果被continue本条语句不会执行else: print('循环完整结束后执行')输出结果:张三王五循环完整结束后执行注:continue只是跳过本次循环,循环结束后else语句块最后被执行三、for循环嵌套循环嵌套为循环中嵌套另外一层循环。forin: forin: 【内层循环体】 【外层循环体】这个只是一个for与for的循环嵌套,当然也可以使用for与while嵌套。循环嵌套经典例1:倒三角的九九乘法表#九九乘法表运行代码:foriinrange(1,10): forjinrange(i,10): print('%d*%d=%d'%(i,j,i*j),end='\t')print('') #控制换行运行结果:1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81例2:冒泡排序#冒泡排序(1)定义冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。(2)运行代码:list=[9,2,7,4,5,6,3,8,1,10]n=0foriinrange(len(list)-1): forjinrange(len(list)-i-1): iflist[j]>>list=[0,1,2,3,4]>>>it=iter(list) #创建迭代对象>>>print(next(it)) #访问当前指针元素,结束后指针向下移一步0>>>print(next(it))1>>>2、for循环访问迭代器示例:代码:list=['张三','李四','王五']a=iter(list) #创建迭代器对象foreach ina: #循环访问迭代器print(each)运行结果:张三李四王五注意:迭代器访问数据比通过索引循环访问速度更快,数据量大时一般会使用迭代器五、range()类控制循环访问range()为Python的自有类,range()带有内置的迭代方法__iter__()和__next()__,它是一个可迭代对象,我们可以通过for访问range()创建的迭代器。注:__iter__()和__next()__左右均为两个_下横线range类初始化参数说明:range(stop)从0开始到stop结束(不包含stop)返回一个产生整数序列的迭代对象。range(start,stop[,step])从start开始到stop结束(不包含stop)返回一个整数序列的迭代对象,step为他的步长。例1:代码:foriinrange(5): print(i)输出:01234'运行运行例2:代码:foriinrange(1,5): print(i)运行结果:1234'运行运行示例3:代码:foriinrange(1,5,2): print(i)运行结果:13'运行运行例4:代码:foriinrange(-1,-5,-2): print(i)运行结果:-1-3'运行运行注意:start,stop,step三个参数可以为负数例5:#结合range()和len()函数以遍历一个序列的索引。代码:list=['张三','李四','王五']foriinrange(len(list)): print(list[i])运行结果:张三李四王五注:for循环可作用的迭代对象远不止list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。通常可迭代对象一般具备iter()和next()方法或者__iter__()和__next()__方法。
|
|