不过,有些情况下你还是需要以更为特定的方式进行迭代。例如,如果你需要在列表中每隔一个元素或每隔两个元素进行访问,或是要同时修改列表呢?如果在同一个for循环内,并行遍历一个以上的序列呢?如果你也需要进行索引呢?
你总是可以用while循环和手动索引运算来编写这些独特的循环,但是python提供了一套内置函数,可以帮你在for循环内定制迭代:
·内置函数range (Python 0.X及之后版本可用)返回一系列连续增加的整数,可作为
for中的索引。
内置函数zip (Python 2.0及之后版本可用)返回一系列并行元素的元组,可用于在for中内遍历多个序列。
内置函数enumerate (Python 2.3及之后版本可用)同时生成可迭代对象中元素的值和索引,因而我们不必再手动计数。
内置函数map (Python 1.0及之后版本可用)在Python 2.X中与zip有着相似的效果,但是在3.X中 map 的这一角色被移除了。
因为for循环可能会比基于while的计数器循环运行得更快,所以借助这些工具并尽可能地使用for循环,会让你受益匪浅。让我们在常见的使用场景下,依次看一看这些内置函数吧。我们将会看到,它们的用法在Python 2.X和3.X中稍有不同,同时它们中的一些要比其他的更加有效。
看你的循环用来干嘛的,举例一个for循环的写法:int
n
while(1){
scanf("%d",&n)
if(n==0)break
int
sum=0
for(int
i=1i<=ni++){sum=sum+i}
printf("sum=%d\n",sum)
}
最后的结果就是得出1加到n的值,而且程序会一直让你输入一个n,直到你输入一个0程序就跳出了~!
for循环,特征:可以规定循环次数,并且每次循环中,循环变量取值都可以不同,可以区分是第几次循环
图案有6行,因此for循环6次,循环变量i,每次循环完成打印一行,6次循环i的取值: 0,1,2,3,4,5 程序为
#define N 6
void main() { int i,j
for ( i=0i<Ni++ ) { //循环N次,i每次加1,从0开始
... //实现输出一行图案,根据i的取值而每行不同
printf("\n")//每次循环最后输出一个换行
}
}
空格每行的个数分别是: 0,1,2,3,4,5 正好是i的取值,因此上边程序...位置加一句
for ( j=0j<ij++)printf(" ")//输出i个空格,因为考虑到图案中星号后面还要添加空格因此printf空格数为两个,为1个单位1组
星号个数: 11,9,7,5,3,1 如果是: 1,3,5,7,9,11的顺序,可以用i*2+1算出来,现在顺序的计算方法是(N-i-1)*2+1
因此程序设计为:
#include<stdio.h>
#define N 6
#define KG i
#define XH ((N-i-1)*2+1)
void main() { int i,j
for ( i=0i<Ni++ ) { //循环N次,i每次加1,从0开始
for ( j=0j<KGj++ ) printf(" ")//两个空格
for ( j=0j<XHj++ ) printf("* "): //循环XH次,每次循环输出星号空格一次
printf("\n")//每次循环最后输出一个换行,结束当前行
}
}
只修改3个宏定义就可以得到常见的一些图案
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)