在python中,用for对列表进行遍历的时候,迭代器中维护的是列表的索引而不是列表的元素。也就是说,for循环是对索引进行迭代,如果在for循环过程中修改了列表,迭代出来的值是新列表的索引位置,如果索引超过了新列表的范围,循环终止。

例子:

def for_test1():
x = list(range(10))
for index, value in enumerate(x):
print("delete:", x)
print("index:", index, "value:", value)
del x[index]
print("x:", x) if __name__ == "__main__":
for_test1()

输出结果:

delete: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
index: 0 value: 0
delete: [1, 2, 3, 4, 5, 6, 7, 8, 9]
index: 1 value: 2
delete: [1, 3, 4, 5, 6, 7, 8, 9]
index: 2 value: 4
delete: [1, 3, 5, 6, 7, 8, 9]
index: 3 value: 6
delete: [1, 3, 5, 7, 8, 9]
index: 4 value: 8
x: [1, 3, 5, 7, 9]

上例中,在对x列表进行遍历的过程中删掉其中的元素,可以看到虽然列表被改变了,循环的索引仍然是依次递增的,说明for循环是对索引进行迭代,然后依据索引去列表中取值。当索引超出了新列表的范围,循环终止。

不会停止的for循环:

 def for_test2():
x = list(range(10))
j = 10
for i in x:
print(i)
x.append(j)
j += 1 if __name__ == "__main__":
for_test2()

由于终止条件是索引超过列表范围,上述的for循环不会终止。

结论:

1. 尽量不要在对列表遍历的过程中,修改列表

2. 如果修改了,记得循环过程中索引依次递增,终止条件是索引超过新列表范围。

python tips: for循环的小问题的更多相关文章

  1. [Python]Python 使用 for 循环的小例子

    [Python]Python 使用 for 循环的小例子: In [7]: for i in range(5): ...: print "xxxx" ...: print &quo ...

  2. python实现简单的循环购物车小功能

    python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s&quo ...

  3. Python Tips阅读摘要

    发现了一本关于Python精通知识点的好书<Python Tips>,关于Python的进阶的技巧.摘录一些比较有价值的内容作为分享. *args and **kwargs 在函数定义的时 ...

  4. Python学习---抽屉框架分析[小评论分析]0315

    注: 此处的小评论涉及数据库操作 初级小评论代码 settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS = (o ...

  5. Python中的循环语句

    Python中有while循环和for循环 下面以一个小例子来说明一下用法,用户输入一些数字,输出这些数字中的最大值和最小值 array = [5,4,3,1] for i in array: pri ...

  6. python分支和循环结构

    本文收录在Python从入门到精通系列文章系列 1. 分支结构 1.1 应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构.然而仅有顺序结构并不能解决 ...

  7. Python 的while循环和for循环的使用

    #循环 遍历 迭代 # while循环 a = 0while a <5: a =a+1 if a == 3: continueprint('我循环了')+str(a) # print ('我循环 ...

  8. python基础之循环结构以及列表

    python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...

  9. Python之 for循环\while循环

    list或tuple可以表示一个有序集合.如果我们想依次访问一个list中的每一个元素呢?比如 list: L = ['Adam', 'Lisa', 'Bart'] print L[0] print ...

随机推荐

  1. 如何预防SQL注入,XSS漏洞(spring,java)

    SQL注入简介 SQL注入是由于程序员对用户输入的参数没有做好校验,让不法分子钻了SQL的空子, 比如:我们一个登录界面,要求用户输入用户名和密码: 用户名: ' or 1=1-- 密码: 点击登录之 ...

  2. 【ACM】hdu_zs2_1004_Problem D _201308030856

    Problem D Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)Total Subm ...

  3. 【ACM】poj_2080_Calendar_201307311043

    CalendarTime Limit: 1000MS  Memory Limit: 30000K Total Submissions: 9787  Accepted: 3677 Description ...

  4. eclipse断点调试教程

    1.断点就是你希望程序运行到哪暂停, 2.断点就是你希望程序运行到哪暂停, 3.断点就是你希望程序运行到哪暂停,断点往往就是你觉得程序可能出错的地方.  设定断点的办法很简单,在你认为出错的那一行的行 ...

  5. [React] Forward a DOM reference to another Component using forwardRef in React 16.3

    The function forwardRef allows us to extract a ref and pass it to its descendants. This is a powerfu ...

  6. SWERC13 Trending Topic

    map暴力. .. Imagine you are in the hiring process for a company whose principal activity is the analys ...

  7. luogu3369 【模板】 普通平衡树 Splay

    题目大意 维护一个数据结构,满足以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(排名定义为比当前数小的数的个数+1.若有多个相同的数,因输出最小的排名) 查询排名为x ...

  8. hdoj--3488--Tour(KM)

    Tour Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submi ...

  9. php模版静态化技术

    PHP页面的静态化很有必要,尤其是在CMS系统中,一些内容一旦生成,基本上不会有变化,这时如果用html将页面静态化,无疑会减少服务其解析PHP页面的负担.以下是看书学来的PHP静态化技术,记录之以备 ...

  10. bind(),call(), apply()方法的区别是什么?

    bind(),call(), apply()方法的区别是什么? 共同点:改变this指向,任何调用都不在起作用 bind() 改变this的指向,不会调用函数,返回一个新的函数 var o ={a:' ...