Chinaunix

标题: 遍历数组的问题 [打印本页]

作者: blueskysee    时间: 2017-01-22 13:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: zl624867243    时间: 2017-01-22 14:02
  1. a = ["xyzz","b","c","d"]
  2. # print len(a)
  3. for i in a:
  4.         # print i
  5.        
  6.         if len(i) > 3:
  7.                 print len(i)
  8.                 # a.insert(3,i)
复制代码

作者: zl624867243    时间: 2017-01-22 14:03
len(i) > 3  永远等于 true
作者: zxy877298415    时间: 2017-01-22 14:07
回复 1# blueskysee


>>> id(arr[:])
139704523241016
>>> id(arr)
139704523240944

第一个相当于从arr[:]里面遍历找len大于3的插入到arr中,第二个相当于自己操作自己,当等于3的时候insert到arr中,i的位置永远等于len=3了,所以死循环了。

作者: blueskysee    时间: 2017-01-22 14:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: blueskysee    时间: 2017-01-22 14:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: seeLnd    时间: 2017-01-25 16:42
arr[:] 返回的是一个新列表,和arr是两个对象,互不影响
作者: zl624867243    时间: 2017-02-06 13:49
回复 6# blueskysee

楼上已经回答你了
作者: zl624867243    时间: 2017-02-06 13:49
回复 6# blueskysee

....
作者: python爱好者    时间: 2017-02-16 12:23
for i in arr:    <- 这个会出现循环insert
    if len(i) > 3:
        arr.insert(3,i)
    print arr

这种是遍历边修改结构 ,所以有问题。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2