首页 > 代码库 > for之Python vs C#
for之Python vs C#
1 class test(object): 2 def rangetest(self): 3 for i in range(2,0,-1): 4 print i 5 print i 6 i=2 7 while i>0: 8 print i 9 i=i-1;10 print i
如上这段代码,输出结果分别为
for(2 1)
1
while(2 1)
0
这是很显而易见的结果。但是我在应用中却将两者混淆,导致程序运行失败。
如下是一个插入算法
1 class Insertion(OrderStrategy): 2 def Sort(self,args): 3 args = list(args) 4 length = len(args) 5 for i in range(1,length): 6 temp = args[i] 7 #for j in range(i,-1,-1):#range don‘t contain the stop element so the middl -1 means stop at 0 8 # if args[j - 1] > temp: #here should check j>0 though no error occurs 9 # args[j] = args[j - 1]10 # else:11 # break12 j=i;13 while j>0:14 if args[j - 1] > temp:15 args[j] = args[j - 1]16 j=j-1;17 else:18 break19 args[j] = temp #asignment the current (position i) element to j(the first element less than it on the left side of i)20 21 print "Insertion:"22 print args23 return args
使用第7至11行的代码时替代不了第12到18行的代码的。
c#中
for (var i = 0; i < 10; i++) { }
他是会有边界检测,i会自增到10,比较结果为false,则结束
而Python的for只是用来遍历元素,并没有比较条件可以让他提前结束。当然你可以在遍历中自己加入break强行进行退出遍历,如下
for j in range(i,-1,-1):#range don‘t contain the stop element so the middl -1 means stop at 0 if args[j - 1] > temp and j>0: args[j] = args[j - 1] else: break
这段代码与上边12-18行一个效果。(但是恐怕没人会这么用吧~~~毕竟人家Python本来就支持负索引)
是自己的语法误使用造成错误,仅作记录提醒自己。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。